centOS7 上面安装mysql8以上并且配置外网访问

时间:2022-01-15 04:31:18

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

centOS7 上面安装mysql8以上并且配置外网访问

 

 此时mysql已经可以正常运行,不过想要进入里面,需要从日志文件中获取到初始密码:

grep "password" /var/log/mysqld.log

 

 centOS7 上面安装mysql8以上并且配置外网访问

 

 

接着就可以登录数据库了

mysql -uroot -p

执行以上命令后输入密码,就是初始密码,输入的密码是看不见的

进入数据库后不能够进行任何操作,因为要修改密码后才能操作

先退出mysql

quit

接着使用一下命令来修改密码:

mysqladmin -uroot -poldpassword password newpasswrod

注意:MySQL对密码复杂度有一定的要求(新版本允许修改规则),默认密码规则如下:

  1. 长度不得小于8位
  2. 必须包含至少一个数字,一个小写字母,一个大写字母和一个特殊字符

 

如果命令有用,但是出现密码不符合规范,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%‘;

centOS7 上面安装mysql8以上并且配置外网访问

 

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。
然后就可以在客户端中测试一下链接是否正常了。

需要注意的几个问题

  1. 上面的GRANT语句可能和之前的版本不同,网上其他人写的旧的教程中这个语句不太适合用在MySQL8中。引用中有最新的官网文档可以拿来参考

  2. 有些系统会因为服务器防火墙导致即使配置成功,也无法远程链接MySQL。如果无法链接,可以先暂时关闭防火墙测试一下是否时因为防火墙的原因(不同版本的Centos系统防火墙配置可能不一样,具体可能需要另查资料)
    防火墙命令:
    [[email protected] ~]# service firewalld stop
    或者
    [[email protected] ~]# systemctl stop firewalld.service

  3. 如果使用navicat连接出现1251的错误,说明是密码的解析不对,低版本的navicat使用的密码加密方式和mysql8的加密方式不对,所以会出现错误,这时候有两种方法,一种是将navicat版本升高到能够支持的地步,另一种方式是修改mysql8中的加密方式,使得两者对口;
    1. 我使用第二种方式:命令如下:  
       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

             https://www.cnblogs.com/virde/p/centos-mysql8-install.html