centOS7 上面安装mysql8以上并且配置外网访问
1.首先要下载mysql:
wget -i -c https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
使用上面的命令下载安装用的yum(相当于下载器),接下来就是要安装mysql
yum -y install mysql80-community-release-el7-3.noarch.rpm
再就是安装mysql服务器了
yum -y install mysql-community-server
这个可能要很多时间,需要耐心等待,我当初安装的时候光着一步就花了2个小时
2.mysql服务器的配置
启动mysql:
systemctl start mysqld.service
查看运行状态
systemctl status mysqld.service
此时mysql已经可以正常运行,不过想要进入里面,需要从日志文件中获取到初始密码:
grep "password" /var/log/mysqld.log
接着就可以登录数据库了
mysql -uroot -p
执行以上命令后输入密码,就是初始密码,输入的密码是看不见的
进入数据库后不能够进行任何操作,因为要修改密码后才能操作
先退出mysql
quit
接着使用一下命令来修改密码:
mysqladmin -uroot -p'oldpassword' password 'newpasswrod'
注意:MySQL对密码复杂度有一定的要求(新版本允许修改规则),默认密码规则如下:
- 长度不得小于8位
- 必须包含至少一个数字,一个小写字母,一个大写字母和一个特殊字符
如果命令有用,但是出现密码不符合规范,ERROR 1819 (HY000): Your password does not satisfy the current policy requirements。
上面的命令对于mysql8来说可以生效,就是密码的规范需要注意。
如果想设置简单的密码,可以先登录mysql中,使用一下几条命令修改一下:
MySQL 8.0 执行代码:
mysql> set global validate_password_policy=0;
ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'
mysql> set global validate_password_length=1;
ERROR 1193 (HY000): Unknown system variable 'validate_password_length'
问题解决
1、分析: 可以看到,修改 policy 和 length 的值,在MySQL5.7中好使,在MySQL8.0中无效。'validate_password_policy' 变量不存在。
2、解决: 先修改一个满足的密码 (如:Root_12root)
3、密码修改后,可用命令查看 validate_password 密码验证插件是否安装。
mysql> SHOW VARIABLES LIKE 'validate_password%';
4、MySQL 8.0 调整密码验证规则:
mysql> set global validate_password.policy=0;
mysql> set global validate_password.length=1;
来自:https://www.cnblogs.com/zgxblog/p/10708182.html
再退出到linux的shell,使用命令来修改密码
如果这一条命令没用,
可以推荐:
1.先登录mysql
使用命令(先使用databse):
use mysql;
再使用:
ALTER USER 'root'@'localhost' IDENTIFIED BY'你的密码';
如果这条命令还是没用,请到别的网页上进行查找,推荐网址:https://m.php.cn/manual/view/33947.html
此时密码就可以设置的很简单,例如1234之类的。到此数据库的密码设置就完成了。
接着设置外网访问:
- 执行以下命令进行修改
mysql> use mysql;
mysql> update user set host="%" where user='root';
mysql> GRANT ALL ON *.* TO 'root'@'%';
mysql> flush privileges;
执行完之后用exit命令退出shell客户端,重启MySQL。
然后就可以在客户端中测试一下链接是否正常了。
需要注意的几个问题
-
上面的GRANT语句可能和之前的版本不同,网上其他人写的旧的教程中这个语句不太适合用在MySQL8中。引用中有最新的官网文档可以拿来参考
-
有些系统会因为服务器防火墙导致即使配置成功,也无法远程链接MySQL。如果无法链接,可以先暂时关闭防火墙测试一下是否时因为防火墙的原因(不同版本的Centos系统防火墙配置可能不一样,具体可能需要另查资料)
防火墙命令:
[root@virde ~]# service firewalld stop
或者
[root@virde ~]# systemctl stop firewalld.service - 如果使用navicat连接出现1251的错误,说明是密码的解析不对,低版本的navicat使用的密码加密方式和mysql8的加密方式不对,所以会出现错误,这时候有两种方法,一种是将navicat版本升高到能够支持的地步,另一种方式是修改mysql8中的加密方式,使得两者对口;
- 我使用第二种方式:命令如下:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY'newPassword';
亲测有效。
- 我使用第二种方式:命令如下:
命令完成后再去连接试试。
但此时还有一个问题,就是因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:
yum -y remove mysql57-community-release-el7-10.noarch
参考几个高质量的安装文章:https://www.cnblogs.com/funbin/p/11154784.html