一、安装之前检测系统是否有自带的MySQL
1.#检查是否安装过MySQL
rpm -qa | grep mysql
结果如下:
mysql80-community-release-el7-1.noarch
mysql-community-server-8.0.11-1.el7.x86_64
mysql-community-common-8.0.11-1.el7.x86_64
mysql-community-libs-8.0.11-1.el7.x86_64
mysql-community-client-8.0.11-1.el7.x86_64
# 卸载mysql的命令:
yum remove mysql-xxx-xxx-
删除mysql的配置文件,卸载不会自动删除配置文件,首先使用如下命令查找出所用的配置文件;
find / -name mysql
可能的显示结果如下:
/var/lib/mysql
/var/lib/mysql/mysql
/usr/bin/mysql
/usr/lib64/mysql
/usr/local/mysql
根据需求使用以下命令 依次 对配置文件进行删除
rm /var/lib/mysql
rm /var/lib/mysql/mysql
rm /usr/bin/mysql
rm /usr/lib64/mysql
rm /usr/local/mysql
或使用强制删除 rpm -e --nodeps xxx
2.#检查是否存在 mariadb 数据库(内置的MySQL数据库),有则强制删除
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 #强制删除
rpm -e --nodeps mariadb-5.5.68-1.el7.x86_64 #强制删除
二、安装
1. centos的yum 源中默认是没有mysql的,所以我们需要先去官网下载mysql的repo源并安装。在MySQL官网中下载YUM源rpm安装包:网址链接
MySQL :: Download MySQL Yum Repository
也可以选择执行命令下载YUM源rpm安装包:
wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
2. 安装MySQL源;
rpm -ivh mysql80-community-release-el7-1.noarch.rpm
或
yum localinstall mysql80-community-release-el7-1.noarch.rpm
会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo mysql-community-source.repo
3. 检查MySQL源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
4. 查看mysql yum仓库中mysql版本,使用如下命令:
yum repolist all | grep mysql
可以看到 MySQL 5.5 5.6 5.7为禁用状态 而MySQL 8.0为启用状态;如果您不想安装mysql8.0的版本我们可以按下面操作去做,要是安装的mysql8.0版本这步可以略过。使用 yum-config-manager 命令修改相应的版本为启用状态最新版本为禁用状态:
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
或者可以编辑 mysql repo文件,将相应版本下的enabled改成 1 即可:
cat /etc/yum.repos.d/mysql-community.repo
5. 有了MySQL源后安装MySQL
yum install mysql-community-server
输入确认继续安装
6. 安装报错,提示无公共秘钥
解决方法:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
然后再次安装
7. 查看是否安装成功
yum list installed mysql-*
8. 开启mysql服务:
systemctl start mysqld.service
# 检查MySQL运行状态
systemctl status mysqld
9. 设置开机自启:
systemctl enable mysqld.service
-- 如果开机没有启动的话就使用下面这个命令吧,反正我是没使用
systemctl daemon-reload
# 结束
systemctl stop mysqld.service
# 重启
systemctl restart mysqld.service
10. 获取初始密码
mysql在安装后会创建一个root@locahost账户,并且把初始的密码放到了/var/log/mysqld.log文件中;
cat /var/log/mysqld.log | grep password
# 使用初始密码登录mysql
mysql -uroot -p
# 首次登陆更改密码:
ALTER USER "root"@"localhost" IDENTIFIED BY "MySQL@123";
PS:MySQL默认的密码复杂度为 MEDIUM,所以新密码至少为8位,并且必须包含大、小写字母、数字和特殊字符
##密码策略
1、查看 mysql 初始的密码策略,
输入语句 “ SHOW VARIABLES LIKE 'validate_password%'; ” 进行查看,(如是第一次陆,则需要更改密码后才能查看)
2、 设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
输入设值语句 “ set global validate_password.policy=LOW; ” 进行设值,
##mysql8.0版本必须符合长度(默认是8位),且必须含有数字,小写或大写字母,特殊字符。因为实在我本地自己的库,所以我修改了密码最小长度和密码的策略
老版本的密码策略变量:
validate_password_policy #这个参数用于控制validate_password的验证策略:
## 0-->low ## 1-->MEDIUM ## 2-->strong。
validate_password_length #密码长度的最小值(这个值最小要是4)。
validate_password_number_count # 密码中数字的最小个数。
validate_password_mixed_case_count #大小写的最小个数。
validate_password_special_char_count #特殊字符的最小个数。
validate_password_dictionary_file #字典文件
8.0后要注意密码策略变量变化
validate_password.check_user_name ON
validate_password.dictionary_file
validate_password.length
validate_password.mixed_case_count
validate_password.number_count
validate_password.policy
validate_password.special_char_count
如:validate_password_policy 变为validate_password.policy.
所以设置密码的验证强度等级
set global validate_password_policy=0;变为 set global validate_password.policy=0 ;
设置密码最小长度(4):
set global validate_password_length=6; 变为 set global validate_password.length=4;
3、修改root的密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';
FLUSH PRIVILEGES;
##远程设置:
1、远程设置
mysql> use mysql;
mysql> update user set host='%' where user='root';
#授权用户名的权限,赋予任何主机访问数据的权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
2、开放3306端口:
-- 查看已经开放的端口
firewall-cmd --list-ports
-- 开启端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
重启防火墙:
#重启firewall
firewall-cmd --reload
#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
3、 端口开放后就可以进行数据库连接操作了,在使用Navicat连接 Mysql 8.0.15可能会出现问题 Client does not support authentication protocol 错误解决方法:
#修改加密规则
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
#更新一下用户的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
#刷新权限
FLUSH PRIVILEGES;