linux 安装mysql8.0及常见报错处理

一、从官网下载自己所需的安装包

https://downloads.mysql.com/archives/community/

只需下载RPM Bundle包就行了,里面包含了安装此版本所有的包,解压如下图所示

安装此版本只需以下包即可

直接上传到linux环境安装,安装时这些包有先后依赖顺序,否者安装时要报错(不过多尝试几次也能安装成功,以下为安装顺序)

rpm -ivh mysql-community-common-8.0.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-8.0.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-8.0.25-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-8.0.25-1.el7.x86_64.rpm

 

二、启动mysql服务

我用的linux环境是CentOS7,服务管理命令systemctl,在红帽6.0以下用的是service

systemctl start mysqld

systemctl enable mysqld

service mysqld start

查看数据库密码

cat /var/log/mysqld.log

登录数据库修改密码

mysql -uroot -p

修改密码几种方法(后面两种只能修改当前登录用户密码):

alter user 'root'@'localhost' identified by 'new_password'; 

alter user user() identified by 'new_password';

set password = 'new_password';

flush privileges    刷新权限

此时可能会报如下错误,报错原因:密码强度不够,需要设置长一点(这是mysql8.0新特性,默认密码强度等级为MEDIUM)

自己做实验不方便,可以修改密码强度

注:以下是我修改后的设置,默认密码长度8,policy为MEDIUM

show variables like '%validate_password%';

set global validate_password_length = 4                   设置密码长度为4

set global validate_password_policy = LOW             密码策略为LOW      

修改后系统环境变量后会立即生效,但是重启服务就会失效,永久生效需要添加到 /etc/my.cnf配置文件中

validate_password_policy说明:

密码强度检验等级,可以使用数值0、1、2或相应的符号值LOW、MEDIUM、STRONG来指定

0/LOW:只检查长度

1/MEDIUM:检查长度、数字、大小写、特殊字符

2/STRONG:检查长度、数字、大小写、特殊字符、字典文件

 

三、设置数据远程登录

查看host和user信息 

修改root用户host为% (localhost代表本地登录,%代表远程登录)

update mysql.user set host='%' where user='root' and host='localhost';

 

四、远程工具连接数据库

第一次连接数据库时响应很久都没反应,最后还连接不成功,当然这是很正常现象,我们逐步排除问题所在

我大致归纳了几个问题所在:

1、服务没启动

systemctl status mysqld   查看服务是否启用

2、端口问题

netstat -ntpl      查看本地所有开放端口

lsof -i:3306

ss -ltn

3、查看端口是否开放

在cmd中 

telnet 192.168.10.114 3306

4、防火墙问题

有两种方式解决,1、直接关闭防火墙,2、设置防火墙策略

systemctl stop firewalld

firewall-cmd --set-default-zone=trusted     默认放行所有请求连接

 

此时我们用navicat或sqlyong工具连接,出现这个原因是MySQL8之前的版本中加密规则是mysql_native_password,而在MySQL8之后,加密规则是caching_sha2_password。解决问题方法有两种,第一种是升级图形界面工具版本,第二种是把MySQL8用户登录密码加密规则还原成mysql_native_password。第二种解决方案如下

#修改'root'@'%'用户的密码规则和密码

alter user 'root'@'%' identified with mysql_native_password by 'rootR@123';

 

五、字符集问题

注:mysql8.0默认字符集为utf8,不需要修改

mysql5.7的版本字符集为latin需要修改字符集

set global character_set_server = utf8

修改配置文件my.cnf

character_set_server = utf8 添加到mysqld下

posted @ 2022-07-29 10:44  香饼  阅读(922)  评论(0编辑  收藏  举报