问题起因 在使用 docker 之后,我深感这项技术的便捷,只需要短短几行命令便可以在服务器上面启动服务,比如说 MySQL、Redis、Nacos 等。但是使用 Docker 部署 MySQL 之后,去总是出现 MySQL 停止运行的问题,而且重启 MySQL 之后,数据库中所有的数据都已经消失了,要想解决还有些服务,因此,我选择直接在服务器上面部署 MySQL 来一步到位。
如何在 CentOS7 上安装 MySQL 安装 MySQL rpm 源信息 打开 MySQL :: Download MySQL Yum Repository
根据你的系统版本,选择对应的安装包,例如我的是 CentOS 7.5,这个系统的 Linux 内核是 Linux 7,所以我选择了红框内的地址,大家依次类推。
拼接下载地址头:http://dev.mysql.com/get/ ,得到以下地址
1 wget http://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
rpm 安装源信息
1 rpm -ivh mysql80-community-release-el7-7.noarch.rpm
安装 MySQL 1 yum install mysql-community-server
安装过程中一律输入 y 即可
检查是否安装成功
输出一下内容代表安装成功
1 2 3 4 5 6 7 8 mysql-community-libs-compat-8.0.33-1.el7.x86_64 mysql-community-icu-data-files-8.0.33-1.el7.x86_64 mysql80-community-release-el7-7.noarch mysql-community-common-8.0.33-1.el7.x86_64 mysql-community-libs-8.0.33-1.el7.x86_64 mysql-community-server-8.0.33-1.el7.x86_64 mysql-community-client-8.0.33-1.el7.x86_64 mysql-community-client-plugins-8.0.33-1.el7.x86_64
检查 mariaDB 是否被覆盖
输出空,表示 mariaDB 已经被成功覆盖。
登录和修改密码 我们安装的时候,并没有设置初始密码
所以 mysql 在第一次启动的时候,会自动初始化一个密码
通过以下这行代码,我们可以查看 mysql 自动初始化的密码:
1 2 3 4 5 6 # 第一次启动后,可以查看mysql初始化密码 grep 'temporary password' /var/log/mysqld.log 输出(root@localhost: 后面的是密码): 2023-04-21T06:03:27.071550Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: r2to%yZ%a)%s
登录 一定要注意:-p 和’密码’之间是没有空格的
1 2 # 登录mysql mysql -u root -p'r2to%yZ%a)%s
修改 root 密码 默认的密码策略,需要:大写英文 + 特殊字符 + 数字
1 ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root_123';
特殊的密码策略需要安装插件来解决:text validate_password.so
具体方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1、先按照mysql的要求,修改一次密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root_123'; 2、退出mysql exit 3、重新登录mysql mysql -u root -p'Root_123' 4、安装密码验证插件 install plugin validate_password soname 'validate_password.so'; 5、查看是否启用了插件 select plugin_name, plugin_status from information_schema.plugins where plugin_name like 'validate%'; +-------------------+---------------+ | plugin_name | plugin_status | +-------------------+---------------+ | validate_password | ACTIVE | +-------------------+---------------+ 输出这样的内容,表示成功启用
查看验证策略的键支信息
1 2 3 4 5 6 7 8 9 10 11 12 13 SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Value | +--------------------------------------+-------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | MEDIUM| | validate_password.special_char_count | 1 | +--------------------------------------+-------+
` 我们只需要修改表中数据即可该表策略。
开放 root 账户远程登录 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # 登录 mysql -u root -p'密码' # 如果你的数据库是 mysql 8 及以上 # 1、进入数据库 use mysql # 2、修改user表 update user set host='%' where user='root'; # mysql 5.7 及之前,执行这行代码即可 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION; # 重载授权表 FLUSH PRIVILEGES; # 退出 exit # 重启 systemctl restart mysqld