Centos7服务器安装Mysql,并配置用户、远程链接、链接php。
rpm 安装 Mysql5.7 相应的 yum源
rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”
rpm 执行安装包 二进制包(Binary)以及源代码包(Source)两种。
二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。
官方CentOS 7 rpm源中不包含Mysql5.7源
安装Mysql
yum install mysql-community-server
启动Mysql和开机启动
systemctl start mysqld
systemctl enable mysqld
修改密码
- 获取初始化密码
grep "password" /var/log/mysqld.log
- 链接数据库
mysql -uroot -p
- 输入获取到的初始化密码
通过以下命令修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
密码不能过于简单,否则会如下报错,这里网上有些修改Mysql密码验证规则的,楼主是觉得没必要的,毕竟要保证数据安全,就不能用弱密码
密码规则 包含大写 小写 特殊符号如 . ? * 等
创建用户和设置用户可远程登陆
- 创建用户命令模板:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
- 参数说明:
username - 你将创建的用户名,
host - 指定该用户在哪个主机上可以登陆,此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录,如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录;也可以指定某台机器可以远程登录;
password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。
如创建一个test用户,密码为test123,可以进行远程登录:
mysql> create user 'test'@'%' identified by 'test123'
删除用户
如果用户创建错了,肯定要支持删除操作,使用命令:
mysql> drop user 'username'@'host';
用户授权
- 授权test用户有testDB数据库的某一部分权限:
mysql> grant select,update on testDB.* to test@'%' identified by 'test123';
- 授权test用户有testDB数据库的所有操作权限:
mysql> grant all privileges on testDB.* to 'test'@'%' identified by 'test123';
- 授权test用户拥有所有数据库的某些权限:
mysql> grant select,delete,update,create,drop on *.* to 'test'@'%' identified by 'test123';
- 授权test用户拥有所有数据库的所有操作权限:
mysql> grant all on *.* to 'test'@'%' identified by 'test123';
privileges - 用户的操作权限,如select,delete,update,create,drop等,如果要授予所有的权限可使用all(参考第二种授权方式);% 表示对所有非本地主机授权,不包括localhost。
参考: mysql 用户管理和权限设置
- 刷新权限:
mysql> FLUSH PRIVILEGES
- 因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:
yum -y remove mysql57-community-release-el7-10.noarch
常见问题
1)php 在使用pdo链接mysql的时候会出现Permission Deny错误,解决方案:
- 临时关闭Selinux
setenforce 0
发现可以正常连接了,修改/etc/sysconfig/selinux文件可以永久地禁用它。
将文件中 SELINUX=enforcing 修改为:SELINUX=disabled
2)mysql_front远程连接时,提示:The 'INFORMATION_SCHEMA.SESSION_VARIABLES' feature is disabled; see the documentation for 'show_compatibility_56' 错误,解决方案:
从mysql5.7.6开始information_schema.global_status已经开始被舍弃,为了兼容性,此时需要打开 show_compatibility_56
mysql> select * from information_schema.global_status limit 3;
ERROR 3167 (HY000): The 'INFORMATION_SCHEMA.GLOBAL_STATUS' feature is disabled; see the documentation for 'show_compatibility_56'
- 查看show_compatibility_56其值
mysql> show variables like '%show_compatibility_56%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| show_compatibility_56 | OFF |
+-----------------------+-------+
1 row in set (0.01 sec)
- 把show_compatibility_56打开
mysql> set global show_compatibility_56=on;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like '%show_compatibility_56%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| show_compatibility_56 | ON |
+-----------------------+-------+
1 row in set (0.00 sec)
mysql> select * from information_schema.global_status limit 3;
+-----------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+-----------------------+----------------+
| ABORTED_CLIENTS | 0 |
| ABORTED_CONNECTS | 0 |
| BINLOG_CACHE_DISK_USE | 0 |
+-----------------------+----------------+
3 rows in set, 1 warning (0.00 sec)
完成上述操作后,即可用mysql_front连接到mysql数据库了。
本文参考文献:
Centos7中 mysql5.7 用户 创建 、授权、远程登录
show_compatibility_56