CentOS 7 安装MySQL 8

自己在虚拟机上想安装mysql用于学习,在安装过程中碰到一些小问题,特此记录下。

 

1.到mysql官网下载安装包

需要下载的是 Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit),当然如果是32位的选择32位的。

下载地址如下:https://dev.mysql.com/downloads/mysql/ ;安装参考文档:https://dev.mysql.com/doc/refman/5.7/en/linux-installation-rpm.html

需要下载的是RPM Bundle ,在这个包中包含了所有需要的rpm包。

下载完成后传到虚拟机中,并且解压到/usr/local/mysql/ 目录下。

tar -xvf mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar -C /usr/local/mysql/

在安装之前centos7默认安装的是mariadb,所以要安装mysql首先要卸载mariadb,否则会冲突。

列出所有被安装的rpm package 

rpm -qa | grep mariadb

卸载

rpm -e mariadb-libs-5.5.37-1.el7_0.x86_64

错误:依赖检测失败:
        libmysqlclient.so.18()(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要
        libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要

强制卸载

rpm -e --nodeps mariadb-libs-5.5.37-1.el7_0.x86_64

 

2.安装解压后的文件

解压完成后到解压的目录下会发现有很多rpm文件,这时参考mysql官方文档的安装操作,运行如下命令进行安装:

yum install mysql-community-{server,client,common,libs}-* mysql-5.*

这里有一个坑,如果按照server,client,common,libs这个顺序安装会有问题,正确的安装顺序如下:

yum localinstall -y mysql-community-common-8.*
yum localinstall -y mysql-community-libs-8.*
yum localinstall -y mysql-community-client-8.*
yum localinstall -y mysql-community-server-8.*

如果没有报错那就接着进行下一步,如果出错就需要百度了。

3.启动mysql服务

在启动之前先检查安装结果:

rpm -qa | grep mysql

启动和查看mysql状态

systemctl start mysqld
systemctl status mysqld

MySQL在启动过程中会进行如下操作:

(1) 初始化MySQL;

(2) 在/var/lib/mysql目录下生成一个SSL证书和密钥文件;

(3) 安装validate_password plugin;

(4) 创建一个超级用户帐号'root'@'localhost,并且为其生成一个随机密码存放在/var/log/mysqld.log文件。

 

4.修改密码

通过下面这个命令获取初始密码:

grep 'temporary password' /var/log/mysqld.log
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass1!';

5.使用连接工具进行连接

在安装完成,启动服务,修改密码后,接下来就是使用工具进行连接。需要注意的应该关闭防火墙或者添加端口,连接工具才能正常连接。

1.允许外部连接

但是很不幸连接失败,报错信息如下:ERROR 1130: Host 192.168.3.100 is not allowed to connect to this MySQL server。从错误信息中可以看出来服务器不允许连接,已经把防火墙关了为啥还是不允许连接呢?mysql安装好后默认是只允许本地连接的,需要做如下修改:

mysql -u root -p

mysql>use mysql;

mysql>select 'host' from user where user='root';

mysql>update user set host = '%' where user ='root';

mysql>flush privileges;

mysql>select 'host'   from user where user='root';

第一句是以权限用户root登录

第二句:选择mysql库

第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)

第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址

第五句:刷新MySQL的系统权限相关表

第六句:再重新查看user表,有时候查看发现没有变化,别慌,重启服务试试。

systemctl restart mysqld

重启完成后,再次使用连接工具进行登入,发现还是报错,不过这次错误信息有变化了:

1251 client does not support authentication protocol requested by server;consider upgrading Mysql client

ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'

2.修改my.cnf和修改密码验证方式

经过一段时间的百度发现原来的密码的验证方式不对,需要修改验证方式。网上大多的路子是先执行一个sql语句修改验证方式,然后修改 /etc/my.cnf 中的配置文件,然后再次重启。修改my.cnf完全OK,但是在执行:alter user root@localhost identified with mysql_native_password by 'yourpassword'; 时经常报错,执行不成功,查找原因是因为经过第一步修改了host为%了。

修改执行的sql语句为:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'youPwd'

修改的/etc/my.cnf:

执行成功,使用连接工具连接正常连接,大功告成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值