之前写过一篇文章记录linux服务器安装mysql数据库,安装完之后发现mysql是5.0版本。自己本机的mysql是8.0版本,导出的.sql文件在mysql5.0上一直报错。所以再重装下mysql8.0版本。
采用的是下载.rpm文件的方式安装~
第一步:下载.rpm文件
https://dev.mysql.com/downloads/mysql/ 或者https://dev.mysql.com/downloads/file/?id=480720
下载.rpm文件的时候需要注意linux服务器的版本:
输入lsb_release -a 查看linux版本
我下载的是mysql-8.0.13-1.el6.x86_64.rpm-bundle.tar
8.0.13 :版本号
el6 : 适用linux centos6系统
x86_64 :x86_64位
========================================================
一开始不懂..下载的mysql-8.0.17-1.el8.x86_64.rpm-bundle.tar,提示各种版本过低..折腾了半天装不上。
第二步:卸载原Mysql
rpm -qa | grep mysql //检测当前系统是否安装mysql,有的话,要先把原来的卸载。
# rpm -e mysql-libs-5.1.73-8.el6_8.x86_64 //普通删除模式,mysql名称要写全,和上面查到的名称一致
# rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64// 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
第三步:安装Mysql
用WinSCP传入linux服务器
tar -xvf mysql-8.0.13-1.el6.x86_64.rpm-bundle.tar //解压
里面文件如下:
安装顺序如下:
rpm -ivh mysql-community-common-8.0.13-1.el6.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.13-1.el6.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.13-1.el6.x86_64.rpm
rpm -ivh mysql-community-client-8.0.13-1.el6.x86_64.rpm
rpm -ivh mysql-community-server-8.0.13-1.el6.x86_64.rpm
第四步:配置mysql
安装完mysql8.0之后先不要启动,配置mysql的忽略大小写,启动之后在设置的话会非常麻烦。
#vim /etc/my.cnf //windows下修改的是my.ini
在[mysqld]后面任意一行添加lower_case_table_names=1
,如图:
service mysqld start //启动mysql
service mysqld status //查看mysql启动状态
chkconfig mysqld on //设置mysql开机自启动
登录mysql:
网上查资料说的是获取随机密码第一次登录,自己没有验证,我是通过修改/etc/my.cnf 添加skip-grant-tables跳过验证登录。
将两种都贴上:
1.随机密码登录:
grep 'temporary password' /var/log/mysqld.log //生成随机密码
mysql -uroot -p //使用随机密码登陆
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; //修改密码
//(这里直接修改为123456会提示密码太弱[非要改为123456,先要修改mysql8的密码规则],见下文~
2.修改/etc/my.cnf 添加skip-grant-tables跳过验证登录
vim /etc/my.cnf //编辑my.cnf文件
在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,保存退出。
mysql -uroot -p //登录,不需要密码
登录后:
use mysql; //切换到mysql库
select host,user,authentication_string from user; //可以查看root用户的host及密码(加密后)
************mysql8.0去除了password字段,改为authentication_string ******************
update user set authentication_string = '' where user = 'root';
//将密码置空,这样my.cnf去掉skip-grant-tables依旧可以空密码登录。
vim /etc/my.cnf
//编辑my.cnf文件 去掉之前添加的“skip-grant-tables”,依旧可以空密码登录
第二种方法比较麻烦,第一种能够登录的话推荐第一种。
修改root用户密码
mysql8.0使用了新的密码策略。想使用类似’123456’的密码需要修改密码策略~
1.查看mysql的密码策略
show variables like 'validate_password%';
validate_password.check_user_name 用户名检测
validate_password.dictionary_file 指定密码验证的文件路径;
validate_password.length 固定密码的总长度;
validate_password.mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
validate_password.number_count 整个密码中至少要包含阿拉伯数字的个数;
validate_password.policy 指定密码的强度验证等级,默认为 MEDIUM;
关于 validate_password_policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
validate_password.special_char_count 整个密码中至少要包含特殊字符的个数;
set global validate_password.policy=LOW; //设置密码强度为LOW
//其他条件设置语句大体相同、
我设置的密码为root,密码策略修改完如上图
策略修改完后,修改密码:
alter user 'root'@'localhost' identified by 'root'; //修改密码为root,提示修改成功~
第五步:Navicat登录Mysql数据库
启动Navicat 新建连接…报错,提示Host xxxxx is not allowed to connect to this MySql server
解决:1.打开终端,进入mysql
2.use mysql; //选中mysql中的 ·mysql· 表
3.update user set host = '%' where user = 'root'; //更新权限,修改为允许全部连接
4.select host, user from user; //查看是否修改成功
5.flush privileges; //刷新表的权限(或者重启一次mysql)
执行第三步的时候有可能遇到‘Duplicate entry ‘%-root’ for key ‘PRIMARY’’的问题。说明已有相应的user=‘root’,host=’%'数据,直接执行步骤4.5即可。
再次验证:成功
另:mysql8.0与mysql5.0相比
1.mysql库user表 password字段去掉,变为authentication_string
2.密码策略改变,设置简单密码需要修改密码策略
3.密码加密规则改变,
在mysql8.0之前的版本使用的密码加密规则是mysql_native_password,但是在mysql8则是caching_sha2_password。
项目部署可能会出现
Unable to load authentication plugin 'caching_sha2_password'
的错误,
可参考:https://blog.csdn.net/weixin_42954381/article/details/94458583
4.mysql8.0启动后修改my.cnf设置忽略大小写及设置后无法启动问题
可参考:https://blog.csdn.net/weixin_42954381/article/details/100523640
参考:
https://blog.csdn.net/mfkarj/article/details/83345225 Centos 6.5安装Mysql8
https://blog.csdn.net/hello_world_qwp/article/details/79551789
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements