CentOS7 上安装 MySQL5.7

MySQL5.7在centos7上的安装步骤

查看系统中是否已安装 MySQL 服务

1
2
3
rpm -qa | grep mysql

yum list installed | grep mysql

如果已安装则删除 MySQL 及其依赖的包:

1
yum -y remove mysql-libs.x86_64

下载MySQL的repo源

CentOS7的yum源中默认是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。

1
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

安装mysql57-community-release-el7-8.noarch.rpm

1
rpm -ivh mysql57-community-release-el7-8.noarch.rpm

安装 MySQL

1
yum install mysql-server

遇到疑问的地方,一路 Y 下去即可

重启mysql服务并得到随机密码

安装完毕后,在 /var/log/mysqld.log 文件中会自动生成一个随机的密码,网上有些教程在这里没有重启mysql服务而直接去得随机密码,但是我试了得不到随机密码,重启mysql服务器就得到了

1
2
service mysqld restart  #重启mysql服务
grep "password" /var/log/mysqld.log //得到随机密码

登录到 MySQL 服务端并更新用户 root 的密码

1
2
mysql -u root -p随机密码   #打印出 MySQL 的版本即表明已登录;
mysql> set password = password('新密码'); #在mysql控制台输入

由于 MySQL5.7 采用了密码强度验证插件 validate_password,设置简单的密码可能会如下错误
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
故此我们需要设置一个有一定强度的密码,如果不想设置难度大的密码,可进行如下设置
首先,修改validate_password_policy参数的值

1
mysql> set global validate_password_policy=0;

validate_password_policy有以下取值:
Policy |Tests Performed
0 or LOW |Length
1 or MEDIUM |Length; numeric, lowercase/uppercase, and special characters
2 or STRONG |Length; numeric, lowercase/uppercase, and special characters; dictionary file
这样,判断密码的标准就基于密码的长度了。这个由validate_password_length参数来决定。
validate_password_length最小值为4

1
mysql> set global validate_password_length=4;

设置MySQL远程访问

1
2
3
mysql> grant all privileges on *.* to root@"%" identified by "新密码";          //设置用户 root 可以在任意 IP 下被访问:
mysql> grant all privileges on *.* to root@"localhost" identified by "新密码"; //设置用户 root 可以在本地被访问:
mysql> flush privileges; #刷新权限使之生效:

开放3306端口或者关闭防火墙

开通端口:centos7跟以前相比使用的是Firewalld防火墙管理工具,不再是iptables
Firewalld增加端口的命令是:

1
2
firewall-cmd --zone=public --add-port=3306/tcp --permanent    //permanent永久生效,没有此参数重启后失效
systemctl restart firewall //重启防火墙

或者关闭防火墙

1
systemctl stop firewalld

忘记密码时,可用如下方法重置

1
2
3
4
5
6
# service mysqld stop
# mysqld_safe --user=root --skip-grant-tables --skip-networking &
# mysql -u root
mysql> use mysql;
mysql> update user set password=password("new_password") where user="root";
mysql> flush privileges;

MySQL相关操作

1
2
3
4
service mysqld start    //启动 MySQL 服务
service mysqld stop //关闭 MySQL 服务
service mysqld restart //重启 MySQL 服务
service mysqld status //查看 MySQL 的状态
打赏

请我喝杯咖啡吧~

支付宝
微信