首先,先到mysql的官方网址找到mysql8的yum下载地址
官网:https://dev.mysql.com/downloads/repo/yum/
这里,我选择的是社区版本
下载mysql
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
sudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm
安装mysql
yum install mysql mysql-server
启动mysql
sudo systemctl start mysqld
检查mysql状态
sudo systemctl status mysqld
有红框的时间就是状态正常
查看临时密码
sudo grep ‘temporary password’ /var/log/mysqld.log
配置mysql
sudo mysql_secure_installation
密码就设置为(设置了半天)
MyNewPass4!
然后后面是一系列的初始化设置,默认就好了
查询mysql版本号
mysqladmin -u root -p version
开放其他地址连接
mysql -u root -p
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>grant all privileges on *.* to root@'%' identified by "MyNewPass4!";
mysql>flush privileges;
开放端口-防火墙
firewall-cmd --get-active-zones
添加端口到防火墙中
firewall-cmd --zone=public --add-port=3306/tcp --permanent
防火墙重新读取端口列表
firewall-cmd --reload
随后测试连接会出现以下错误
经查,是mysql8.0启用caching_sha2_password作为首选的身份验证插件
解决方法一:
登陆mysql
mysql -uroot -pMyNewPass4!
查询登陆方式
use mysql;
select host, user, plugin from user;
发现新版MySQL都是默认用caching_sha2_password这个plugin来加密密码了
执行修改验密方式
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘MyNewPass4!’;
flush privileges;
这时登陆验密方式改变了,再测试链接就可以成功了
ps:MYSQL8.0版本sql_mode=only_full_group_by问题
先用select @@sql_mode;查询,复制这个值,在my.cnf中添加配置项(把查询到的值删掉only_full_group_by这个选项,其他的都复制过去):
vi /etc/my.cnf
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
重启mysql服务
重启服务:systemctl restart mysqld.service
停止服务:systemctl stop mysqld.service
启动服务:systemctl start mysqld.service
查看服务:systemctl status mysqld.service