总结了三个我遇到的坑
下载地址:https://dev.mysql.com/downloads/mysql/
点击下载之后,可以选择注册Oracle账号,也可以跳过直接下载。
下载完成后,选择一个磁盘内放置并解压。
如果官网龟速下载,建议使用下面镜像巨快。相对的~
Mysql国内镜像:http://mirrors.sohu.com/mysql/MySQL-8.0/
下载完成之后,解压即可!
(1)
变量名:MYSQL_HOME
变量值:E:\mysql-5.7.20-winx64
(2)生成data文件
以管理员身份运行cmd
进入E:\python\mysql\mysql-8.0.12-winx64\bin>下
执行命令:mysqld --initialize-insecure --user=mysql 在E:\python\mysql\mysql-8.0.12-winx64\bin目录下生成data目录
(3) 安装MySQL
继续执行命令:mysqld -install
(4)启动服务
继续执行命令:net start MySQL
(5)登录MySQL
登录mysql:(因为之前没设置密码,所以密码为空,不用输入密码,直接回车即可)
F:\mysql-8.0.12-winx64\bin>mysql -u root -p
(6)查询用户密码
查询用户密码命令:mysql> select host,user,authentication_string from mysql.user;
MySQL 5.7 的版本,因为在user表中没有password字段,一直使用下边的方式来修改root密码
.
use mysql;
.
.
update user set authentication_string = password(“root”) where user = “root”;
.
现在要用MySQL8.0.11版本,装好MySQL后用上边方法修改密码,一直报错。后来去掉password()函数后,没有报错,但是输入密码时不对。
查阅后才知道在mysql 5.7.9以后废弃了password字段和password()函数;authentication_string:字段表示用户密码,而authentication_string字段下只能是mysql加密后的41位字符串密码。所以需要用一下方式来修改root密码:
ALTER user ‘root’@‘localhost’ IDENTIFIED BY ‘newpassword’;
MySql 从8.0开始修改密码有了变化,在user表加了字段authentication_string,修改密码前先检查authentication_string是否为空
1、如果不为空
.use mysql;
.update user set authentication_string=’’ where user=‘root’;–将字段置为空
.ALTER user ‘root’@‘localhost’ IDENTIFIED BY ‘root’;–修改密码为root
2、如果为空,直接修改
ALTER user ‘root’@‘localhost’ IDENTIFIED BY ‘root’;–修改密码为root
如果出现如下错误
.ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
.mysql> GRANT ALL PRIVILEGES ON . TO IDENTIFIED BY ‘123’ WITH GRANT OPTION;
需要执行
flush privileges;
然后再执行
ALTER user ‘root’@‘localhost’ IDENTIFIED BY ‘root’;–修改密码为root
1.首先查看防火墙状态
防火墙版本的不同命令也会有不同
0.4的命令为
systemctl status firewall.service
0.5的命令为
systemctl status firewalld
防火墙没有运行
2.命令登入服务器mysql
3.执行下面语句添加权限
use mysql;
select host, user, authentication_string, plugin from user;
查看user表的root用户Host字段是localhost,说明root用户只能本地登录,现在把他改成远程登录
update user set host=’%’ where user=‘root’;
4.刷新权限
所有操作后,应执行
FLUSH PRIVILEGES;
执行后继续连接发现还是报错
查找问题后发现
MySQL8.0之前的版本密码加密规则:mysql_native_password,
MySQL8.0密码加密规则:caching_sha2_password
不一样
5.修改mysql加密规则
输入命令
ALTER USER ‘root’@’%’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘password’;
加密规则改了也同样设置密码
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘新的密码’;
再试
如有侵权,请联系删除。
信息加载中,请等待
微信客服(速回)
微信客服(慢回)