首次安装MySQL后,通过Navicat进行连接MySQL遇到了一系列的问题,不过都顺利KO ~
画蛇添足
- DataBase - MySQL下载、安装、配置
- DataBase - 初次使用MySQL中遇到的一系列问题
正篇
- 基础必备
- 允许远程连接数据库
- 改表法
- 授权法
- 远程连接身份验证
- Navicat设置编码格式
基础必备
此处声明一些cmd内基础sql语句的操作与注意事项
- 管理员身份运行cmd
- 启动服务
net start mysql
- 登录数据库
#之后输入之前设置过的密码即可
mysql -u root -p
- 进入mysql数据库
use mysql
- 查看user对应的host
select host, user from user;
允许远程连接数据库
远程连接MySQL数据库报错:is not allowed to connect to this MYSQL server的解决办法
改表法
PS:我用的这种解决的问题
在localhost登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,将"localhost"改称"%"
完整命令
#登录MySQL
mysql -u root -p
#查看已有数据库
show databases;
#进入mysql数据库
use mysql;
#修改用户的host
update user set host = '%' where user = 'root';
#检验是否修改成功
select host, user from user;
补充:
show databses; ~
select host, user from user; ~ 方便检验修改前后的host
授权法
场景:你想root使用mypassword从任何主机连接到mysql服务器的话
GRANT ALL PRIVILEGES ON *.* TO ‘root’@'%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
# 刷新MySQL的系统权限相关表
flush privileges;
场景:如果你想允许用户root从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.10.40.54' IDENTIFIED BY '123456' WITH GRANT OPTION;
# 刷新MySQL的系统权限相关表
flush privileges;
常见问题:在采用法二授权法之后,无法在本地登录mysql
1.授权
# 登录MySQL
mysql -u root -p
# 授权
grant all privileges on *.* to 'root'@'主机名' identified by '123456' with grant option;
# 刷新权限
flush privileges;
2.在本地使用ip地址登录
mysql -u root -p -h ip地址
远程连接身份验证
Authentication plugin 'caching_sha2_password
Navicat Premium 12连接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
#修改账户密码加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
#更新用户密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
#刷新权限并重置密码
FLUSH PRIVILEGES;
核心命令
这里的%代表的是任意远端而非localhost,可以进入mysql表查询对应的user
扩展命令
#单独重置密码命令
alter user 'root'@'localhost' identified by '123456';
大功告成
Navicat设置编码格式
编辑连接 - 高级 (默认编码:自动)