mysql使用笔记
版本驱动不匹配
报错:Unknown system variable ‘query_cache_size’
原因:链接驱动版本不匹配,query cache在MySQL5.7.20就已经过时了,而在MySQL8.0之后就已经被移除了
解决:版本提升到8.0以后
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>//修改版本号
</dependency>
驱动名修改:com.mysql.jdbc.Driver–>com.mysql.cj.jdbc.Driver
navicat连接数据库报错
MySQL 连接出现 Authentication plugin ‘caching_sha2_password’ cannot be loaded
出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password.
-
管理员权限运行命令提示符,登陆MySQL(记得添加环境变量)
mysql -u root -p
password: #登入mysql
-
修改账户密码加密规则并更新用户密码
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘password自己密码’ PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘password自己密码’; #更新一下用户的密码
-
刷新权限并重置密码
FLUSH PRIVILEGES; #刷新权限
现在再次打开Navicat Premium 12连接MySQL问题数据库就会发现可以连接成功了
单独重置密码命令:alter user ‘root’@‘localhost’ identified by ‘111111’;
忘记密码
mysql忘记密码
停止服务
无密码重启
mysqld --console --skip-grant-tables --shared-memory
另起一个dos窗口,无密码登录
mysql -uroot -p
password: //直接回车
清空密码
update mysql.user set authentication_string='' where user='root' and host='localhost';
退出,重启,重新登录
exit;
正常重启服务
mysqld
上面已经清空密码,无密码登录
mysql -uroot -p
password: //直接回车
修改密码为 root123
alter user root@localhost identified by 'root123';
退出,重新登录
exit;
重新登录
mysql -uroot -p
password: root123
登录成功
新增用户授权报错
Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation
原因:8版本新增了一个system_user帐户类型,root没有system_user权限
解决:
grant system_user on *.* to 'root';
flush privileges;
root用户远程登录授权
设置MySQL的root用户允许远程登录
1.在云主机上连接mysql
mysql -uroot -p #根据提示输入密码
2.依次执行以下sql命令
use mysql #打开 mysql 数据库
将host设置为%表示任何ip都能连接mysql,当然也可指定为某个特定ip
update user set host='%' where user='root' and host='localhost';
flush privileges; #刷新权限表,使配置生效