Linux上安装MySQL8
清理旧的MySQL、Mariadb安装包和依赖包
清理MySQL相关软件包、依赖包及配置
- 使用如下命令查找MySQL的软件包和依赖包:
rpm -pa | grep mysql
- 如果有则使用
yum remove mysql-xxx
依次删除找到的软件 - 使用如下命令查找MySQL配置文件
find / -name mysql
显示结果:
/etc/selinux/targeted/active/modules/100/mysql
/usr/lib64/mysql
/usr/share/mysql
- 使用
rm -rf xxx
命令依次删除配置文件
清理Mariadb相关软件包、依赖包及配置
- 使用如下命令查找Mariadb相关软件包
rpm -pa | grep mariabd
- 如果有则使用如下命令删除
rpm -e --nodeps mariadb-xxx
到这里旧的MySQL和Mariadb数据库就清理完毕。
安装MySQL
可点击以下链接查看官方手册
本次我们要在Linux上使用Yum安装MySQL,相关手册如下:
Installing MySQL on Linux
Installing MySQL on Linux Using the MySQL Yum Repository
根据官方手册下面我们正式进入MySQL的安装
- 添加 MySQL Yum Repository
- 进入MySQL Developer Zone选择相应的MySQL Yum repos
- 根据自己的系统选择并下载release package,本次我们要在Centos7中安装,我们选择
Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package
,链接如下:
mysql80-community-release-el7-3.noarch.rpm
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
- 验证是否成功添加MySQL Yum repository
yum repolist enabled | grep "mysql*"
注:MySQL Yum repository安装成功后,任何使用yum update
命令进行的系统范围内的更新都将升级MySQL包并且还将替换任何本地的第三方包
- 选择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-manager
或dnf 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-manager
或dnf 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
- 如果系统支持
- 安装MysSQL
- 使用如下命令安装MySQL:
sudo yum install mysql-server
- 该命令将安装一系列软件包:
- 启动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客户端报错,没有权限连接:
- 该问题可能是密码不正确,也可能是用户权限的问题。经过是因为密码输入错误导致连接报错。