关注Java领域相关技术 记录有趣的事情

Linux上安装MySQL8

US-B.Ralph
US-B.Ralph
2019-08-09

清理旧的MySQL、Mariadb安装包和依赖包

清理MySQL相关软件包、依赖包及配置

  1. 使用如下命令查找MySQL的软件包和依赖包:
    rpm -pa | grep mysql
  2. 如果有则使用 yum remove mysql-xxx 依次删除找到的软件
  3. 使用如下命令查找MySQL配置文件
    find / -name mysql
    显示结果:
/etc/selinux/targeted/active/modules/100/mysql
/usr/lib64/mysql
/usr/share/mysql
  1. 使用rm -rf xxx命令依次删除配置文件

清理Mariadb相关软件包、依赖包及配置

  1. 使用如下命令查找Mariadb相关软件包
    rpm -pa | grep mariabd
  2. 如果有则使用如下命令删除
    rpm -e --nodeps mariadb-xxx

到这里旧的MySQL和Mariadb数据库就清理完毕。


安装MySQL

可点击以下链接查看官方手册

点此跳转MySQL官方手册

本次我们要在Linux上使用Yum安装MySQL,相关手册如下:

Installing MySQL on Linux
Installing MySQL on Linux Using the MySQL Yum Repository

根据官方手册下面我们正式进入MySQL的安装

  1. 添加 MySQL Yum Repository
sudo wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
  • 根据自己的系统使用如下命令安装下载好的发行包
sudo yum install platform-and-version-specific-package-name.rpm
#For an EL6-based system, the command is in the form of:
sudo yum install mysql80-community-release-el6-{version-number}.noarch.rpm
#For an EL7-based system:
sudo yum install mysql80-community-release-el7-{version-number}.noarch.rpm
#For an EL8-based system:
sudo yum install mysql80-community-release-el8-{version-number}.noarch.rpm
#For Fedora 32:
sudo dnf install mysql80-community-release-fc32-{version-number}.noarch.rpm
#For Fedora 31:
sudo dnf install mysql80-community-release-fc31-{version-number}.noarch.rpm
  1. 验证是否成功添加MySQL Yum repository
yum repolist enabled | grep "mysql*"


注:MySQL Yum repository安装成功后,任何使用yum update命令进行的系统范围内的更新都将升级MySQL包并且还将替换任何本地的第三方包

  1. 选择MysSQL的发行版本
  • 使用MySQL Yum repository时,默认情况下会选择最新的GA版本进行安装,如果这正是你想安装的版本,则可以直接跳到第4步进入安装,否则按照以下步骤选择想要安装的MySQL subrepositories
  • MySQL Yum repository中不同版本的MySQL Community Server托管在不同的subrepositories中,默认启动最新的GA版本subrepositories,其他的版本则均被禁用,使用如下命令可以产看MySQL Yum repository中所有的subrepositories及所有subrepositories的状态:
yum repolist all | grep mysql


我们看到当前启动的MySQL subrepositories是mysql80-community/x86_64 MySQL 8.0 Community Server enabled: 193

  • 如果我们想安装的就是MySQL最新的GA版本则无需额外配置,如果要安装其他版本,则需要禁用GA版本并启用想要安装版本的subrepositories,具体操作步骤如下:
    • 如果系统支持yum-config-managerdnf config-manager,则可以使用如下命令进行配置:
    sudo yum-config-manager --disable mysql57-community
    sudo yum-config-manager --enable mysql80-community
    #支持dnf系统
    sudo dnf config-manager --disable mysql57-community
    sudo dnf config-manager --enable mysql80-community
    
    • 除使用yum-config-managerdnf config-manager命令外,还可以手动编辑/etc/yum.repos.d/mysql-community.repo文件来选择想要安装的MySQL subrepositories,该文件中记录的是各个subrepositories启用情况:
    #Enable to use MySQL 5.7
    [mysql57-community]
    name=MySQL 5.7 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/basearch/
    enabled=0
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    [mysql80-community]
    name=MySQL 8.0 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    
    • 找到需要配置的subrepositories,编辑enabled选项,enabled=0表示禁用,enabled=1表示启用,当前配置则表示启用MySQL 8.0 Community Server
    • 修改完之后使用如下命令验证启用、禁止是否正确
    yum repolist enabled | grep mysql
    #dnf系统
    dnf repolist enabled | grep mysql
    
  1. 安装MysSQL
  • 使用如下命令安装MySQL:
sudo yum install mysql-server
  • 该命令将安装一系列软件包:
  1. 启动MySQL服务器
  • 使用如下命令启动MySQL服务器
sudo service mysqld start
  • 使用如下命令检查MySQL服务器的状态
sudo service mysqld status

  • 首次启动MySQL时,MySQL服务器将做如下操作
    • 服务器初始化
    • 在 data directory 中生成SSL证书及密匙文件
    • 安装并启用validate_password,默认密码策略要求密码至少包含1个大写字母,1个小写字母,1个特殊字符,并且密码长度至少8个字符,使用如下命令可修改密码策略:
      set global validate_password.policy=0;
      set global validate_password.length=1;
      
    • 使用'root'@'localhost创建一个超级用户帐户。该用户的密码将存储在错误日志文件中,使用以下命令可以查看该用户密码:
      sudo grep 'temporary password' /var/log/mysqld.log
      
  • 通过临时密码登录root账户,并自定义root账号密码:
mysql -uroot -p
Alter user 'root'@'localhost' Identified by 'MyNewPass1!';

远程连接MySQL

  • 服务器开启相应端口
#查看当前防火墙打开的所有端口
firewall-cmd --zone=public --list--port
#增加开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent 
#批量开发端口
firewall-cmd --zone=public --add-port=13000-14000/tcp --permanent
#关闭打开的端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent
#批量关闭端口
firewall-cmd --zone=public --remove-port=13000-14000/tcp --permanent
#重启防火墙,使配置生效
firewall-cmd --reload
  • MySQL中设置用户支持外网访问
    • 切换mysql数据库
    use mysql;
    
    • 查询用户信息
    select user,host form user;
    

    • 从查询结果我们可以看到当前root用户只允许从本机登录,需要将root用户设置为所有地址都可以登录:
    update user set host='%' where user='root';
    #刷新权限
    flush privileges;
    
    • 如果使用MySQL8之前的客户端连接,需要将密码加密方式修改为mysql_native_password,官方建议首选caching_sha2_password作为身份验证插件,点击这里查看官方说明。修改加密方式的具体命令如下:
    alter user 'root'@'%' identified with mysql_native_password by 'NewPass1!';
    #刷新权限
    flush privileges
    
    • 到这里MySQL远程连接配置完毕,可以使用Navicat客户端远程连接MySQL
    • 我在连接时Navicat客户端报错,没有权限连接:
    • 该问题可能是密码不正确,也可能是用户权限的问题。经过是因为密码输入错误导致连接报错。
US-B.Ralph
MySQL数据库

Leave a Comment

邮箱地址不会被公开。 必填项已用*标注