官网下载mysql-5.7.25-winx64.zip(https://dev.mysql.com/downloads/mysql/)
解压后,自己手动新建my.ini
其中内容:
[mysql]#设置mysql客户端默认字符集default-character-set=utf8[mysqld]#设置3307端口port = 3307#设置mysql的安装目录basedir="D:\Program Files\mysql-5.7.25-winx64"#设置mysql数据库的数据的存放目录datadir="D:\Program Files\mysql-5.7.25-winx64\data\"#允许最大连接数max_connections=200#服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8#创建新表时将使用的默认存储引擎default-storage-engine=INNODB#跳过密码验证#skip-grant-tables
初始化
以管理员身份运行cmd,切换到mysql的bin目录,执行初始化命令:
mysqld --initialize
mysqld --initialize –insecure
mysqld --initialize-insecure --user=mysql
mysqld --initialize --consle
初始化完成后,会在解压好的根目录下,自动创建data目录。这个data解压后是没有的
安装为系统服务
mysqld -install 服务名
sc create MySQL5.7 binPath= "D:\Program Files\mysql-5.7.25-winx64\bin\mysqld.exe",其中,MySQL5.7为系统服务名称,binPath为mysqld.exe文件的路径。不是mysql.exe
注册表里修改,要不启动不了
将my.ini文件中的skip-grant-tables配置项前面的注释拿掉,然后重启mysql服务
执行mysql -P3307 -uroot -p ,这里一定注意要加端口号,因为本机已经有一个mysql5.5了,所以更改了端口
直接Enter ,什么也不输入
修改密码
输入 use mysql; 输入 update user set authentication_string = password('123456'), password_expired = 'N', password_last_changed = now() where user = 'root';上面语句的意思,将root用户的密码修改为123456,并且永不过期。
把my.ini 中的skip-grant-tables选项重新注释掉
重启mysql5.7
在mysql8系统下,net stop mysql 用mysqld --console --skip-grant-tables --shared-memory可以无密码启动服务
服务启动后,以空密码登入系统
mysql.exe -u root
然后执行sql命令将root用户密码设置为空
UPDATE mysql.user SET authentication_string='123456' WHERE user='root' and host='localhost';
alter user'root'@'%' IDENTIFIED BY ' 123456';
alter user 'root'@'localhost' IDENTIFIED BY '123456';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Navicat 无法连接MySQL8.0解决方法
问题描述:
"Authentication plugin 'caching_sha2_password' cannot be loaded
问题原因:
MySQL8使用了新的认证插件,也就是上面错误中提到的“caching_sha2_password”,一些低版本的Navicat还不支持这个新的插件,所以才会出现错误。navicat12.0.28已经支持新的验证方式。
解决方法:
把登录验证方式改回来:改成mysql_native_password方式
修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY '' PASSWORD EXPIRE NEVER;
更新用户密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
刷新权限:
flush privileges;
在新版本的mysql中,user表中去掉了password,改为了 authentication_string
另:
单独重置密码命令:alter user 'root'@'localhost' identified by '123456';