MySQL 5.7在CentOS7以yum方式安装
一、安装环境
- MySQL版本号:5.7.28 、CentOs7.x;
- 本地虚机:192.168.230.132(勿管:个人备忘)
二、安装流程
2.1、下载yum repository
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
2.2、安装Mysql
yum -y install mysql57-community-release-el7-10.noarch.rpm
2.3、安装MySQL服务器
yum -y install mysql-community-server
2.4、启动MySQL
systemctl start mysqld.service
2.5、查看运行状态
systemctl status mysqld.service
2.6、找到MySQL root用户的初始密码:
grep "password" /var/log/mysqld.log
2.7、使用临时密码连接客户端:
mysql -uroot -pR+,Y_Dp_76r
2.8、修改密码安全限制,否则不能使用简单密码
- 临时修改:
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
- 永久修改:MySQL默认的配置文件:vim /etc/my.cnf
validate_password_policy=0
validate_password_length=1
2.9、修改后重启MySQL
service mysqld restart;
2.10、修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
2.11、授权远程访问
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';
2.12、关闭防火墙
- 如果需要远程连接,注意开放3306端口或者关闭防火墙
#关闭命令
service firewalld stop;
#关闭防火墙自启动:
chkconfig firewalld off;
#查看防火墙状态:
service firewalld status;
三、创建用户并授权(非root用户)
3.1、创建用户
- 切换到root用户下,输入如下MySQL命令(以下均用用户名为alix,密码为Alix_1234为例):
CREATE USER 'alix'@'%' IDENTIFIED BY 'Alix_1234';
FLUSH PRIVILEGES;
3.2、验证是否创建成功
- 在root用户下,输入如下MySQL命令:
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
- 如果query中出现cdc,那就证明cdc用户创建成功;
3.3、对新增用户增加权限
-
以增加所有权限为例:
GRANT ALL PRIVILEGES ON *.* TO 'alix'@'%' IDENTIFIED BY 'Alix_1234';
-
检查权限:
show grants for 'alix'@'%';
四、忘记密码解决方式
4.1、修改my.cnf
- 如果忘记了root密码或者用临时密码无法登录:
vim /etc/my.cnf
- 在配置文件中加一行skip-grant-tables
[mysqld]
skip-grant-tables
4.2、重启数据库服务
service mysqld restart;
4.3、设置密码
- 然后使用mysql命令登录,使用以下密码修改密码:
mysql> update user set authentication_string=password('123456') where Host='localhost' and User='root';
- 修改以后,在配置文件中去掉skip-grant-tables,重启数据库服务。
- 再使用 mysql -uroot -p123456登录。修改密码安全限制和授权远程访问依然要做。
五、问题:
5.1、连接失败问题:
-
连接失败!null, message from server: “Host ‘xxxx‘ is not allowed to connect to this MySQL server“
解决方法:连接数据库,这里以默认用户名密码为例
mysql -uroot -proot show databases; use mysql ; select user,host from user;//可以看到user为root,host为localhost的话,说明mysql只允许本机连接,那么外网,本地软件客户端就无法连接了。 update user set host = ‘%’ where user=‘root’; flush privileges; //刷新权限
5.2、时区不同步问题:
-
解决方法:修改jdbc时区,改成服务器所在地的真实时区
修改前:jdbc:mysql://[IP]:[PORT]/[DB]?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
修改后:jdbc:mysql://[IP]:[PORT]/[DB]?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
5.3、Sql操作无完整报错提示
-
解决方法:用其他无问题的同版本数据库的 /usr/share/mysql/english/errmsg.sys
-
重启数据库
service mysqld restart;
六、备忘
6.1、MySQL默认的数据文件目录:
show variables like 'datadir';
/var/lib/mysql/
6.2、MySQL默认错误日志文件
show variables like 'log_error';
/var/log/mysqld.log
6.3、Mysql配置文件路径
/etc/my.cnf
6.4、Mysql错误信息语言文件
/usr/share/mysql/english/errmsg.sys
6.5、验证binlog是否开启
# 结果log-bin为ON,证明binlog已经开启。
show variables like '%log_bin%';