CentOS7 安装 Mysql8 并配置远程登录

检查系统环境

以下五步完成之后,这样 mysql 就全部删除干净了,若没安装过 mysql 可忽略以上步骤

  1. 查找是否安装 mysql
    1
    rpm -qa | grep mysql
  2. 如果已安装需卸载 mysql

    一般用 rpm -e 的命令删除 mysql, 这样表面上删除了 mysql, 可是 mysql 的一些残余程序仍然存在,并且通过第一步的方式也查找不到残余,而 yum 命令比较强大,可以完全删除 mysql.(ps: 用 rpm 删除后再次安装的时候会提示已经安装了,这就是 rpm 没删除干净的原因)

1
yum -y remove mysql-*
  1. 把所有出现的目录全部删除
    1
    find / -name mysql
  2. 删除配置文件
    1
    rm -rf /etc/my.cnf
  3. 删除 mysql 的默认密码
    1
    rm -rf /root/.mysql_sercret

下载安装官网 yum 源

https://dev.mysql.com/downloads/repo/yum/

  1. 将 mysql rpm 源文件下载
    1
    wget -P /opt/software https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
  2. 安装下载好的 rpm 文件
    1
    2
    cd /opt/software
    rpm -ivh mysql80-community-release-el7-3.noarch.rpm
  3. 导入密钥
1
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

image

  1. 查看是否安装成功
1
ll /etc/yum.repos.d

image

安装 mysql 服务器

安装过程比较久,请耐心等待

1
yum -y install mysql-community-server

测试 mysql 是否安装成功

启动 mysql 服务器

1
systemctl start mysqld

查看并使用临时密码登录

  1. 查看临时密码

    安装完 mysql 之后,会生成一个临时的密码让 root 用户登录

1
grep "A temporary password" /var/log/mysqld.log

image

  1. 使用临时密码登录 mysql
    1
    mysql -uroot -p
    在 Enter password:后面输入临时密码
    登录成功

更改临时密码

1
mysql> alter user 'root'@'localhost' identified by 'aB12345678@';

无论如何都要先修改一次密码,否则查询修改都执行不了

如果密码太简单则会出现此提示为密码不符合当前策略,需要设置复杂的密码或者修改密码验证策略!
设置必须符合策略的密码 (大小写字母 + 数据 + 符号)

1
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

修改密码验证策略

如果觉得密码过于复杂可以修改密码策略

  1. 先看看当前的密码验证策略

    1
    show variables like 'validate_password.%';

    image

  2. 策略说明

    1
    2
    3
    4
    5
    6
    # 是密码的最小长度,默认是8,我们把它改成4(好像最小就是4位密码)
    set global validate_password.length=4;
    # 验证密码的复杂程度,我们把它改成0
    set global validate_password.policy=0;
    # 用户名检查,用户名和密码不能相同,我们也把它关掉
    set global validate_password.check_user_name=off;
  3. 再执行修改密码的命令

    1
    alter user 'root'@'localhost' identified by '0000';

mysql 远程连接数据库

默认情况下 mysql 是不允许用户远程连接数据库的

  1. 查看 Mysql 默认用户
    1
    2
    use mysql;
    select host,user,authentication_string,plugin from user;
    image

发现 root 的 host 是 localhost,不是 %,可以加个 host 是 % 的 root 账号:
2. 创建远程账号

1
2
3
create user 'root'@'%' identified by '0000';
# 查看 mysql 用户
select host,user,authentication_string,plugin from user;

重新执行查看 mysql 用户命令
image

  1. 授权用户
    1
    grant all on *.* to 'root'@'%';
  2. 尝试远程连接
    主机:安装在服务器 IP
    image