Linux下安装lamp环境,及解决MySQL数据库远程连接问题
安装apache
首先查看服务器版本:cat /etc/redhat-release
安装apache:yum install httpd httpd-devel
输入y,继续:
apache安装完成:
启动apache服务:systemctl start httpd
设置httpd服务开机启动:systemctl enable httpd
查看httpd服务状态:systemctl status httpd
防火墙设置开启80端口:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
如果出现图中情况,说明防火墙未开启,则忽略该步骤:
确认80端口监听中:netstat -tulp
查看服务器ip:ip addr
浏览器输入ip访问:
安装mysql
安装mysql:yum install mariadb mariadb-server mariadb-libs mariadb-devel
输入y:
安装完成:
开启mysql服务:systemctl start mariadb
设置mysql服务开机启动:systemctl enable mariadb
检查mysql状态:systemctl status mariadb
查看数据库端口处于监听状态:netstat -tulp
数据库安全测试:mysql_secure_installation
登录数据库测试:mysql -uroot -p
显示数据库:show databases;
安装php
安装php:yum -y install php
将php与mysql关联起来:yum install php-mysql
出现提示输入y直至完成安装
安装常用php模块:yum install -y php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel php-bcmath
完成安装:
测试php:进入服务器根目录,添加一个php文件用于输出测试内容,然后重启Apache服务器
浏览器访问:
设置数据库远程连接:
在数据库mysql 中的user表中可以看到默认是只能本地连接的,所有可以添加一个用户
# 针对ip
create user 'root'@'192.168.10.10' identified by 'password';
#全部
create user 'root'@'%' identified by 'password';
建议还是针对于ip开放吧,不要全部开放
授权用户:
# 给用户最大权限
grant all privileges on *.* to 'root'@'%' identified by 'password';
# 给部分权限(test 数据库)
grant all privileges on test.* to 'root'@'%' identified by 'password' with grant option;
# 刷新权限表
flush privileges;
# show grants for 'root'@'localhost';
这样设置之后使用navicat连接会报1045错误:
原因是本地ip没有访问远程数据库的权限
解决办法
输入:select user,password,host from user;
可以看到用户表中并没有我们本地ip
给我们本地ip赋予所有权限,包括远程访问:grant all privileges on *.* to root@"xxx.xxx.xxx.xxx" identified by "密码"
然后刷新权限表:flush privileges;
再次输入:select user,password,host from user;
可以看到用户表中已经添加我们本地ip
使用navicat远程连接数据库
成功连接