1.下载MYSQL
近几天在linux服务器已安装过2次mysql8,亲测有效,没有遇到任何问题,文档已写的很清楚,按步骤来即可。如果按文档有遇到要使用yum命令的话,需要服务器开通外网。
1.1官网下载
进入官网下拉到最后,找到下载
1.2选要下载的版本
找到自己linux对应版本点下载,我这里是linux7
2.安装mysql8
2.1 将下载到本地的tar包上传到服务器,我用的是finalshell
1)我这上传到opt/mysql,mysql文件夹可以右键新建或者mkdir mysql
2)解压文件
# tar -xvf mysql-8.0.35-1.el7.x86_64.rpm-bundle.tar
3)安装rpm
只安装必要的几个包就行,命令如下
rpm -ivh mysql-community-common-8.0.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.35-1.el7.x86_64.rpm
1、则查看有没有安装mariadb-libs这个包
rpm -q mariadb-libs
# 检查到有这个包的安装
mariadb-libs-5.5.60-1.el7_5.x86_64
# 直接运行
rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64
2、如果失败
PS1:因为LINUX自带了mariadb数据库,所以导致MYSQL安装失败
PS1:卸载过程中可能会遇到
3、那是因为red hat系统会自带postfix服务(postfix服务是一个邮件服务器),所以要卸载mariadb需要先卸载postfix
yum remove postfix
# 再卸载mariadb-libs
rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64
# 最后重新执行命令
rpm -ivh mysql-community-libs-8.0.35-1.el7.x86_64.rpm
4)继续安装rpm
rpm -ivh mysql-community-devel-8.0.35-1.el7.x86_64.rpm
# 如果报错
错误:依赖检测失败:
pkgconfig(openssl) 被 mysql-community-devel-8.0.35-1.el7.x86_64 需要
# 解决办法
yum install openssl-devel -y
# 再重新安装devel包
继续
rpm -ivh mysql-community-client-8.0.35-1.el7.x86_64.rpm
yum install net-tools
rpm -ivh mysql-community-icu-data-files-8.0.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.35-1.el7.x86_64.rpm
如果安装server报错
/usr/bin/perl 被 mysql-community-server-8.0.18-1.el7.x86_64 需要
perl(Getopt::Long) 被 mysql-community-server-8.0.18-1.el7.x86_64 需要
perl(strict) 被 mysql-community-server-8.0.18-1.el7.x86_64 需要
解决办法:
yum install net-tools
yum install -y perl-Module-Install.noarch
然后进行安装
rpm -ivh mysql-community-server-8.0.35-1.el7.x86_64.rpm
安装完成
2.2启动mysql服务
# 启动mysql服务(时间有点长)
systemctl start mysqld
# 查看mysql的启动状态
systemctl status mysqld
启动成功
systemctl enable mysqld
# 用于设置MYSQL的开机自启动
netstat -tunlp | grep mysql
# 用管道过滤的方式观察MYSQL的服务
ps -ef | grep mysql
# 查看MYSQL的进程
3.登录mysql
在完成安装后,第一次启动时,MYSQL会在指定位置(/var/log/mysqld.log)生成一个log文件,里面包含了一些信息(其中就有我们需要的临时密码)
我们还是可以通过管道符来筛选临时密码。
cat /var/log/mysqld.log | grep password
# 用临时密码登录
mysql -uroot -p
# 粘贴临时密码
hU0e*was)FRQ
3.1修改密码
# 查看密码策略
SHOW VARIABLES LIKE 'validate_password%';
# 提示必须通过alter user 重置密码
You must reset your password using ALTER USER statement before executing this statement.
# 先设置包含大小写字母 数字 字符的密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Dlcqj@5569';
# 再查看密码策略
SHOW VARIABLES LIKE 'validate_password%';
# 1、首先需要设置密码的验证强度等级,设置 validate_password.policy 的全局参数为 LOW 即可
set global validate_password.policy=LOW;
# 2、当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 4 位的密码
set global validate_password.length=4;
# 3、现在为mysql设置4位的长度密码即可
ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';
关于 mysql 密码策略相关参数;
1)、validate_password.length 固定密码的总长度;
2)、validate_password.dictionary_file 指定密码验证的文件路径;
3)、validate_password.mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
4)、validate_password.number_count 整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password.policy 指定密码的强度验证等级,默认为 MEDIUM;
关于 validate_password.policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
6)、validate_password.special_char_count 整个密码中至少要包含特殊字符的个数;
证等级,默认为 MEDIUM;
关于 validate_password.policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
6)、validate_password.special_char_count 整个密码中至少要包含特殊字符的个数;
远程链接报错时:
‘xxx.xxx.xxx.xxx’ is not allowed to connect to this MySQL server
出现该问题的原因是,MySQL数据库只允许自身所在的本机器连接,不允许远程连接。
解决方法:
1、在MySQL所在服务器上使用命令登录到MySQL数据库中
mysql -u root -p
2、选择mysql数据库,并查询权限
use mysql;
select host from user where user=‘root’;
可以看到,执行查询语句后得到的数据结果中 host 的值是 localhost
我们执行update语句修改权限
update user set host = ‘%’ where user =‘root’;
3、刷新配置
flush privileges;
再次执行查询权限语句
select host from user where user=‘root’;
可以看到,已经修改成功
4、最后再次用其他机器连接MySQL数据库,可以连接成功