在阿里云CentOS 7.4默认环境下yum安装MySQL 8.0.11

字号+ 编辑: 种花家 修订: 种花家 来源: 健旺博客 2023-09-11 我要说两句(0)

用centos6.x安装mysql8.0很麻烦,许多人支招说用docker,拜托~~不要这样子好吗?杀鸡焉用牛刀,直接升7.x用yum不就好了吗?在使用yum安装有个前提,建议读者要把原来的数据库产品卸载干净。

本文前提,一定要把原来的数据库产品卸载干净,否则可能会各种奇怪的错误弹出来。以下说正文:

阿里云7.x的公共镜像系统初始化之后,已经为用户安装了大量必须的依赖,例如gcc4.8.5,那么只需要注意卸载yum中自带的mariadb。

卸载之前的mariadb

卸载命令:

# 查找所有在系统内的mariadb
rpm -qa | grep mariadb
# 强制卸载mariadb 这里打比方说安装了mariadb-libs-5.5.56-2.el7.x86_64
# 那么就用如下命令来对应卸载
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

mysql8.0.11安装命令

注意之前不要安装任何一键安装包之类的产品,否则可能会出现无法获取初始root密码的错误。

# 下载mysql源
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
# 本地安装mysql源
yum localinstall mysql80-community-release-el7-1.noarch.rpm
# 检查本地安装mysql源是否成功
yum repolist enabled | grep "mysql.*-community.*"
# 控制台回复以下说明证明ok
# mysql-connectors-community/x86_64           MySQL Connectors Community 51 
# mysql-tools-community/x86_64                MySQL Tools Community 63 
# mysql80-community/x86_64                    MySQL 8.0 Community Server 17
# 正式安装mysql 8.0.11
yum install mysql-community-server

在执行yum install指令安装mysql时,可能出现错误,属于正常现象,可以略过,不断循环重复上述yum install mysql-community-server
这个命令即可,直到安装成功。

启动和找回mysql初始root密码

mysql 8.0.x这个版本不知道搞了什么幺蛾子,非常难以找回密码,首次安装成功之后,先使用systemctl命令启动mysql:

systemctl start mysqld
# 查看mysql启动状态的命令是:
# systemctl status mysqld
# 注意,已经不是mysql 5.x时代的service mysqld start之类的命令了

目前通过以下命令来查看log下告知用户的初始密码:

grep 'temporary password' /var/log/mysqld.log
# 控制台可能回复以下类似内容
# 2018-06-24T01:00:33.381829Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ./GblDs7r1cu

这个时候看控制台回复,尾部就是密码。输入登录命令进行登录:

mysql -uroot -p
# Enter Password:

这个时候需要你按照控制台给出的初始密码来进mysql。

修改mysql初始root密码

进入mysql之后输入以下sql语句修改密码

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码' PASSWORD EXPIRE NEVER;

另外,很多人发现用navicat没办法远程登录mysql 8.0.11的服务器,登录时会报一个considering update client的建议叫你更新客户端,怎么办呢? 原来是mysql 8.0.x把原来mysql 5.x的加密规则给改了,用以下方法修改加密规则(注意:同时允许任何ip地址登录)。

update user set host = '%' where user = 'root'; # 此命令使得用户可以远程任何地点使用root账号登录mysql
# 修改mysql密码算法,采用原生算法
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';

顺便提一嘴,给不太懂mysql的新手看的,如果没有运行第一行命令update掉mysql root账号的可允许登录范围,则下面的修改密码算法的sql命令就是:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

最后,啰嗦了这么多,运行了这么多命令,别忘了用以下命令让mysql重新读新的权限设定。根本不需要重启mysql服务器。

FLUSH PRIVILEGES;

疑难问题

修改root密码提示密码复杂度不够

真他娘的啰嗦, 老子爱起什么密码起什么密码,用的着你他娘的管?

设定全局变量validate_password.policy, 将它修改成0即可。这个变量的意思是安全级别,默认为MEDIUM

set global validate_password.policy = 0;

其他变量可以通过下方语句来进行微调

mysql> 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      |
+--------------------------------------+--------+
7 rows in set (0.01 sec)


迁移完数据目录发现无法启动mysqld服务, 报错: Error: 13 (Permission denied)

解决思路, 先以下命令查看mysql的错误日志

vim /var/log/mysqld.log

发现报错关键内容是:

mysqld: File './binlog.index' not found (OS errno 13 - Permission denied)

网上千篇一律说chown -R mysql:mysql 你的新数据文件路径就可以了, 如果千篇一律都可以, 那还要答案干啥?

如果按照网上众口一词的转述方法重启mysql仍然解决不了问题, 那么你的问题可能是selinux引起的, 首先编辑selinux配置文档:

vim /etc/selinux/config

找到以下内容

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing

把等号后面改成另外两者: permissive或者disabled

记得重启一下服务器

阅完此文,您的感想如何?
  • 有用

    0

  • 没用

    0

  • 开心

    0

  • 愤怒

    0

  • 可怜

    0

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.交流群: PHP+JS聊天群

相关课文
  • 让Mysql查询后直接返回json字符串的方法

  • postgresql的pg_dump备份简单方法

  • 使用sql语句在MySQL库中去掉字段左边、右边指定字符串

  • 避免mysql全表扫描等影响性能的写法规则

我要说说
网上宾友点评