需要的安装包:
下载地址:https://dev.mysql.com/downloads/mysql/
安装顺序:
按照依赖关系依次安装rpm包 依赖关系依次为common→libs→client→server
rpm -ivh mysql-community-common-8.0.17-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.17-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.17-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.17-1.el7.x86_64.rpm
注:ivh中, i-install安装;v-verbose进度条;h-hash哈希校验
安装过程中出现的问题:
1、mariadb-libs 被 mysql-community-libs-8.0.13-1.el7.x86_64 取代
解决办法:执行yum remove mysql-libs解决
2、安装server时,报/usr/bin/perl is needed by mysql-community-server-8.0.17-1.el7.x86_64
执行yum -y install perl.x86_64这个命令解决
参考:https://blog.csdn.net/u010886217/article/details/89416159
解决这两个问题后,mysql安装成功。
启动mysql服务:service mysqld start
启动没有报错,需要进入mysql
mysql安装成功后,会为root用户生成一个默认密码,在/var/log/mysqld.log文件中。
获取密码后,执行命令mysql -uroot -p
然后输入默认密码,登录成功。
这时候要修改默认密码。
执行set password=password('roo')会报错误
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'password('root@123')' at line 1
这个命令在mysql8上不能用了
换了命令:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
报错误:Your password does not satisfy the current policy requirements
百度发现,是设置的密码不符合校验规范。
首先通过命令查看校验规则:SHOW VARIABLES LIKE 'validate_password%';
然后降低校验等级:
mysql> set global validate_password.policy=0;
mysql> set global validate_password.length=1;
全部修改后如下图:
再执行ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';即可修改成功。
参考链接:
https://www.cnblogs.com/zgxblog/p/10708182.html
https://blog.csdn.net/wltsysterm/article/details/79649484
设置远程链接:
修改完root密码后,通过navicate链接mysql,链接不上。
1、首先去linux上看端口是否开放:
netstat -anp | grep 3306
2、查询指定端口是否已开 firewall-cmd --query-port=3306/tcp
发现3306端口被防火墙屏蔽了,关掉防火墙
3、查看防火墙状态
查看防火墙状态 systemctl status firewalld
开启防火墙 systemctl start firewalld
关闭防火墙 systemctl stop firewalld
开启防火墙 service firewalld start
若遇到无法开启
先用:systemctl unmask firewalld.service
然后:systemctl start firewalld.service
链接:https://blog.csdn.net/realjh/article/details/82048492
关掉防火墙后,还是无法通过navicate连接。
因为mysql8的密码校验机制,跟mysql5不一样,navicate还不支持。
use mysql;
需要把root的Host和plugin修改成%和mysql_native_password
update user set host='%' where user='root';
update user set plugin='mysql_native_password' where user='root';
修改后,重新修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
然后赋予权限就可以了。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
参考链接:
https://blog.csdn.net/shenhonglei1234/article/details/84786443
https://www.jianshu.com/p/cd910ba51b3d
https://blog.csdn.net/qq_30505673/article/details/82623435
https://blog.csdn.net/zhengbin9/article/details/82729861
centos7 防火墙相关
https://www.jianshu.com/p/87ba0f564e86
firewall-cmd --state ##查看防火墙运行状态,是否是running
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --list-ports ##列出开放的端口
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
iptables -L -n ##查看规则,这个命令是和iptables的相同的
man firewall-cmd ##查看帮助
systemctl stop firewalld ##关闭防火墙
systemctl start firewalld ##开启防火墙
systemctl status firewalld ##查看防火墙状态
systemctl restart firewalld ##重启防火墙
systemctl disable firewalld ##开机关闭防火墙,即永久关闭
https://www.cnblogs.com/zxg-blog/p/9835263.html
其中注意永久关闭防火墙,防止下次启动navicate还是连接不上mysql
注意将mysql设置为随机自启动
systemctl list-unit-files | grep mysql
如果为enable则为随机自启动
设置mysql不随机启动:
systemctl disable mysqld
设置mysql随机启动
systemctl enable mysqld
https://www.jb51.net/article/105372.htm
https://blog.csdn.net/tingyu1995/article/details/88326923