一、环境版本介绍
# MySQL 版本查询
# mysql --version
mysql Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL
# Centos 版本查询
# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
- 提示1
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
二、安装 MySQL
安装前,先检查。 我们可以检测系统是否自带安装 MySQL
# rpm -qa | grep mysql
mysql80-community-release-el7-3.noarch
mysql-community-libs-8.0.27-1.el7.x86_64
mysql-community-client-8.0.27-1.el7.x86_64
mysql-community-client-plugins-8.0.27-1.el7.x86_64
mysql-community-server-8.0.27-1.el7.x86_64
mysql-community-common-8.0.27-1.el7.x86_64
如果你系统有安装,那可以选择进行卸载:
# rpm -e mysql // 普通删除模式
# rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
开始安装MySQL,安装步骤如下
- 步骤一:安装
MySQL源 - 步骤二:安装
MySQL - 步骤三:启动
MySQL - 步骤四:登录
MySQL - 步骤五:修改
MySQL密码 - 步骤六:远程登录
MySQL
步骤一:安装MySQL源
- 安装
MySQL源CentOS 7版本中MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载Yum资源包。手动下载(或查看)地址:dev.mysql.com/downloads/r…
命令行下载
# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm # MySQL源安装
- 检查
MySQL源是否安装成功
执行成功后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo及 mysql-community-source.repo
成功后,可以通过yum repolist相关命令可以看到mysql相关资源
# yum repolist enabled | grep "mysql.*-community.*"
!mysql-connectors-community/x86_64 MySQL Connectors Community 221
!mysql-tools-community/x86_64 MySQL Tools Community 135
!mysql80-community/x86_64 MySQL 8.0 Community Server 301
步骤二:安装MySQL社区版 服务器
# 安装 MySQL社区版 服务器
# sudo yum install mysql-community-server
该命令会安装MySQL服务器 (mysql-community-server) 及其所需的依赖、相关组件,包括mysql-community-client、mysql-community-common、mysql-community-libs等。
# 成功后,查看MySQL版本
# mysql --version
mysql Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL)
步骤三:启动MySQL
# 启动 MySQL
sudo systemctl start mysqld.service
# 停止 MySQL
sudo systemctl stop mysqld.service
# 重启 MySQL
sudo systemctl restart mysqld.service
# 查询 MySQL 状态
sudo systemctl status mysqld.service
步骤四:登录MySQL
- 查看
MySQL初始密码MySQL第一次启动后会创建超级管理员账号root@localhost,为root用户随机生成了一个密码。初始密码存储在日志文件/var/log/mysqld.log中:
# 查看 ```MySQL``` 初始密码
# sudo grep 'temporary password' /var/log/mysqld.log
2021-11-10T05:44:59.609270Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: <qCaqOt6ejf%
- 登录
MySQL通过命令mysql -uroot -p
步骤五:修改MySQL密码
我修改MySQL密码的过程也很c淡。
初次登录成功后,进行正常操作会受限,提示你必须修改密码后才能进行操作。
# mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
那我就修改,然后我就去修改初始密码,提示不让修改密码。。。
# mysql> SET PASSWORD = PASSWORD('123456');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
尼玛,
原因是:MySQL默认安装了密码安全检查插件validate_password,默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误
官方文档后发现有以下三种密码策略:
| Policy | Tests Performed |
|---|---|
0 or LOW | Length |
1 or MEDIUM | Length; numeric, lowercase/uppercase, and special characters |
2 or STRONG | Length; numeric, lowercase/uppercase, and special characters; dictionary file |
第一步:按规则修改密码(注意:要设置按照规则的复杂密码)。
alter user 'root'@'localhost' identified by '<qCbqOu6ejf%';
第二步:那就修改密码策略(目的是设置任何规则的密码)。
- 方式一:
# 修改密码策略
# mysql> set global validate_password_policy=0;
# mysql> set global validate_password_length=1;
查看修改后的密码策略:
# mysql> show variables like 'validate_password%';
- 方式二:
修改
my.cnf,重新启动mysql服务器以使新设置生效。
# 修改 my.cnf
# vim /etc/my.cnf
# 在 my.cnf 底部添加规则
...
plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
第三步:成功修改密码。
# mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
步骤六:远程登录MySQL
# 允许root远程访问
# mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
# mysql> FLUSH PRIVILEGES;
连接数据库出现的问题:
- 问题1:
navicat连接数据库报错
# navicat连接数据库报错:1130-host ... is not allowed to connect to this MySql server
解决方式:
# 1.查看当前所有数据库
# mysql> show databases;
# 2.进入mysql数据库:use mysql;
# mysql> use mysql;
# 3.查看mysql数据库中所有的表
# mysql> show tables;
# 4.查看user表中的数据
# mysql> select Host, User from user;
# 5.修改user表中的Host
# mysql> update user set Host='%' where User='root';
# 6.最后刷新一下
# mysql> flush privileges;
参考文献: