以8.0.36版本为例
一、下载安装
1、准备工作
(1)查看系统版本
cat /etc/redhat-release
(2)查看是否安装了 MySQL
rpm -qa | grep mysql
查看是否有安装 mariadb,该软件与 MySQL 数据库有冲突,需要手动卸载
# 如果是 CentOS7 可以检测出已经安装了 mariadb
rpm -qa | grep mariadb
如果安装过
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
2、下载
(1)进入MySQL :: MySQL Community Downloads
点击MySQL Community Server
(2)选择 MySQL 的版本,注意 MySQL 的版本需要与 Linux 的版本对应上,如我选择
筛选后在列表中选择tar包
(3)点击download,此时有两种方法
- 第一种,直接点击
No thanks, just start my download
进行下载,然后通过上传工具上传到服务器 - 第二种,右键
No thanks, just start my download
,选择复制链接,然后在服务器中通过wget
命令下载到服务器
我这里是通过wget命令下载的
cd /usr/local/mysql_package
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36-1.el6.x86_64.rpm-bundle.tar
3、解压
tar -xvf mysql-8.0.36-1.el6.x86_64.rpm-bundle.tar
4、安装
必须按照顺序执行命令,否则会出现依赖错误的报错,如果安装过程中出现错误,可以参考下一步。
#1、
rpm -ivh mysql-community-common-8.0.36-1.el6.x86_64.rpm
#2、
rpm -ivh mysql-community-client-plugins-8.0.36-1.el6.x86_64.rpm
#3、
rpm -ivh mysql-community-libs-8.0.36-1.el6.x86_64.rpm
#4、
rpm -ivh mysql-community-client-8.0.36-1.el6.x86_64.rpm
#5、
rpm -ivh mysql-community-icu-data-files-8.0.36-1.el6.x86_64.rpm
#6、
rpm -ivh mysql-community-devel-8.0.36-1.el6.x86_64.rpm
#7、
rpm -ivh mysql-community-server-8.0.36-1.el6.x86_64.rpm
5、常见安装错误
(1)未按照规定顺序安装软件:按照顺序安装即可解决
(2)libc.so.6 缺失
大概率是因为下载的 MySQL版本与 Linux 版本对应不上,可以检查一下 MySQL 压缩包后缀名里面的参数是否与系统版本匹配
- centos7 系统对应的 MySQL 是 el7
- centos8 系统对应的 MySQL 是 el8
(3)openssl 缺失
安装 openssl-devel
即可解决
rpm -ivh mysql-community-devel-8.0.31-1.el8.x86_64.rpm
使用 yum install openssl-devel -y
安装 openssl-devel
yum install openssl-devel -y
再次安装该软件包即可
rpm -ivh mysql-community-devel-8.0.31-1.el8.x86_64.rpm
(4) perl 和 libaio 缺失
安装 prel
和 libaio
即可解决。
查看与 perl 相关的软件
yum list perl
安装:
yum install -y perl.x86_64
查看与 libaio 相关的软件
yum list libaio
安装
yum install -y libaio*
(5)Header V4 RSA/SHA256 Signature, key ID a8d3785c: NOKEY
如mysql-community-devel安装报错
解决方法:加上 --nodeps,就是安装时不检查依赖关系,比如你这个rpm需要devel,但是你没装devel,这样你的包就装不上,用了--nodeps你就能装上了。
sudo rpm -ivh --nodeps mysql-community-devel-8.0.36-1.el6.x86_64.rpm
同样地报错
rpm -ivh mysql-community-server-8.0.36-1.el6.x86_64.rpm
warning: mysql-community-server-8.0.36-1.el6.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID a8d3785c: NOKEY
error: Failed dependencies:
mysql-community-client(x86-64) >= 8.0.11 is needed by mysql-community-server-8.0.36-1.el6.x86_64
也可以使用以下命令解决
sudo rpm -ivh --nodeps mysql-community-server-8.0.36-1.el6.x86_64.rpm
6、检查与清理
6.1、检查:
(1)查看已安装的 MySQL 的版本
mysql -V
或者
mysql --version
(2)查看自动生成的my.cnf配置文件所在目录:可以看到为 /etc/my.cnf
查看内容如下:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
6.2、清理:
删除无用的包
rm -rf /usr/local/mysql-8.0.31-1.el8.x86_64.rpm-bundle.tar
rm -rf /usr/local/mysql_package/
7、安装后常见问题
7.1、socket 文件报错
如执行 mysql -v报错:Can't connect to local MySQL server through socket '***' 。
有两种解决方法:
(1)
二、 命令与配置
1、服务器开关命令 mysqld
mysqld是关于服务器端的程序。
1.1、查看 MySQL 服务状态
systemctl status mysqld
1.2、开启 MySQL 服务
(1)使用systemctl 启动
systemctl start mysqld
(2)使用service 启动
service mysqld start
1.3、设置 MySQL 服务开机自启
systemctl enable mysqld
1.4、 重启 MySQL 服务
(1)使用systemctl 重启
systemctl restart mysqld
(2)使用service 重启
service mysqld restart
再次查看 MySQL 服务状态,可以看到 MySQL 服务已经成功运行:
1.5、暂时关闭 MySQL 服务
服务器重新启动之后,MySQL 服务会再次启动
(1)使用systemctl 关闭
systemctl stop mysqld
(2) 使用service关闭
service mysqld stop
1.6、永久关闭 MySQL 服务
服务器重新启动之后,MySQL 服务也不会再次启动
systemctl disable mysqld
2、客户端命令mysql
mysql是mysql自带的客户端程序 一般都在cmd或者终端下操作,用于登陆到mysql服务器。
2.1、 获取 root 用户的初始密码
第一次运行 MySQL 服务时,会进行初始化加载,同时会生成一个 root 用户的初始密码,可以通过查看日志文件 /var/log/mysqld.log
获取到 root 用户的初始密码,后续可手动修改密码
cat /var/log/mysqld.log | grep 'password'
2.2、修改roo的密码
(1)先使用初始密码登陆到mysql服务
mysql -h 主机名 -P 端口号 -u 用户名 -p密码
如我执行
mysql -u root -p
(2)再修改密码,密码有两种形式:
① 密文:mysql8的默认密码是caching_sha2_password
方式加密的,登陆时需要解密
alter user 'root'@'localhost' identified by 'Mysql(41)';
② 明文:指定为mysql_native_password格式,即为明文密码,修改后使用该密码登陆即可。
#修改密码
alter user 'root'@'localhost' identified with mysql_native_password by 'Mysql#41';
#刷新权限
flush privileges;
(3)修改 MySQL 校验密码的安全策略【可选,一般不建议修改】
# 设置密码长度的最低位数
set global validate_password.length=4;
# 设置密码的安全等级,修改密码安全策略为低(只校验密码长度,至少8位)
set global validate_password.policy=LOW;
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF | 决定是否使用该插件(及强制/永久强制使用):ON/OFF/FORCE/FORCE_PLUS_PERMANENT
| validate_password_dictionary_file | | 插件用于验证密码强度的字典文件路径
| validate_password_length | 8 | 密码最小长度
| validate_password_mixed_case_count | 1 | 密码至少要包含的小写字母个数和大写字母个数
| validate_password_number_count | 1 | 密码至少要包含的数字个数
| validate_password_policy | MEDIUM | 密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG
| validate_password_special_char_count | 1 | 密码至少要包含的特殊字符数
+--------------------------------------+--------+
7 rows in set (0.02 sec)
0/LOW:只检查长度。
1/MEDIUM:检查长度、数字、大小写、特殊字符。
2/STRONG:检查长度、数字、大小写、特殊字符字典文件。
2.3、退出登陆
exit;
三、远程连接
1、端口开放问题
第一次连接提示无法连接到主机,这是因为 3306 端口未开放,如果是云服务器,防火墙的端口、安全组的端口都需要开放,需要开放3006端口。
2、root用户设置远程访问权限
user 表中的 host 字段表示用户的访问权限:localhost:只可以本地访问;%:允许任意地方访问
mysql -u root -p
use mysql;
select host, user, plugin from user;
#设置 root 用户任意地方可以访问
update user set host='%' where user='root';
#刷新权限
flush privileges;
#再次查看
select host, user, plugin from user;
3、密码问题
mysql8的默认密码是加密的,caching_sha2_password
加密方式在远程访问时候不支持,需要修改为 mysql_native_password。(如果第一次修改密码已经修改为mysql_native_password,这一步跳过)。
修改密码策略的同时,将当前 root 用户的密码的验证策略也修改一下,否则当前用户的密码会失效,使得 root 用户无法使用原密码登录 MySQL 服务
#修改密码
alter user 'root'@'%' identified with mysql_native_password by 'Mysql#41';
#刷新权限
flush privileges;
使用可视化工具、远程机器测试, 这时候就可以远程连接了:
四、mysql卸载
1、查看MySQL安装版本
rpm -qa|grep -i mysql
2、关闭MySQL服务
systemctl stop mysqld.service