有的小伙伴不习惯使用docker,又需要再服务器安装mysql,这边简单的分享一下CentOS 7 安装mysql 8.0的操作步骤,还有一些问题处理。
关联文章
二、Springboot整合mysql和mybatis实例代码 附github
安装mysql 8.0
1、检查在CentOS中默认安装有MariaDB
rpm -pa | grep mariadb
2、如果存在,需要先删除mariadb
yum -y remove mariadb-libs.XXX.XXXXX
3、查看旧版本mysql
rpm -qa | grep mysql
4、如果存在旧版本的mysql,进行删除
yum -y remove mysql-xxx-xxx
5、进入自己的文件目录,下载mysql 8.0的repo源,如下图
wget http://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
6、执行安装命令
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
yum install mysql-community-server
7、启动mysql服务
service mysqld restart
8、设置开机自启动
systemctl enable mysqld.service
9、安装完成后,密码为随机密码,这时候我们需要重置密码
grep "password" /var/log/mysqld.log
10、进入mysql控制台,执行后会要求输入重置后的密码,重置密码比较复杂要仔细输入
mysql -u root -p
11、修改密码复杂度和长度,不同版本号的mysql命令也略有不同,修改后设置新密码
mysql 5.6和 mysql 8 有所区别
修改密码复杂度
mysql 5.6:mysql> set global validate_password_policy=0;
mysql 8: mysql> set global validate_password.policy=0;
密码最小长度:
mysql 5.6:mysql> set global validate_password_length=6;
mysql 8: mysql> set global validate_password.length=6;
修改密码
mysql> alter user 'root'@'localhost' identified by '123456';
刷新
mysql> flush privileges;
12、退出控制台界面
mysql> quit
到这里,mysql就安装完毕了,下面我在说下我再安装后遇到的问题
问题解决
1、因为之前,mysql的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。我们这里需要再次修改一次root密码。否则后面连接的时候会出现authentication plugin ‘caching_sha2_passord’错误。
再一次修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
刷新
mysql> flush privileges;
2、连接的时候,如果我们root设置的是localhost会导致外部IP来连接的时候被拒绝,我们使用通配符 % 来修改 root 用户对应的 host 字段,使具有访问所有 ip 地址的权限
mysql> use mysql;
设置root的ip访问权限
mysql> update user set host = '%' where user = 'root';
刷新
mysql> flush privileges;
3、数据库时区问题,有的同学安装后,发现时间戳等自动生成的时间小于当前时间8小时,这里我们可以进入mysql内部,执行sql指令查看当前的时间和time_zone配置
mysql> select now();
mysql> show variables like '%time_zone%';
解决方法一:通过mysql命令设置time_zone
优点:不需要重启MySQL服务,缺点:MySQL服务重启,设置就会消失
mysql> set time_zone = '+8:00';
mysql> set global time_zone = '+8:00';
解决方法二:通过cnf配置,我在上文中的cnf配置已经设置了时区,配置完后记得要重启,[mysqld]注意下原文件,一定不能没有
[mysqld]
#设置默认时区
default-time_zone='+8:00'
设置后我们再查看time_zone,问题就解决了