本文档持续更新中...
连接设置——驱动属性——allowPublicKeyRetrieval改为true
即可。
连接数据库后,如果不想把此项开启,那在改为false就行,连接过一次后面都可正常在重新连接使用,但是如果新增连接还是要把此项开启,不然还是会继续报错。
如果用户使用了 sha256_password 认证,密码在传输过程中必须使用 TLS 协议保护,但是如果 RSA 公钥不可用,可以使用服务器提供的公钥;可以在连接中通过 ServerRSAPublicKeyFile 指定服务器的 RSA 公钥,或者AllowPublicKeyRetrieval=True参数以允许客户端从服务器获取公钥;但是需要注意的是 AllowPublicKeyRetrieval=True可能会导致恶意的代理通过中间人攻击(MITM)获取到明文密码,所以默认是关闭的,必须显式开启。
直接在数据库连接字符串上加上参数allowPublicKeyRetrieval=true,这里的useSSL=false被添加是为了避免SSL错误,但是注意的是:在生产环境中,禁用SSL可能会导致数据传输不安全的风险,所以需要配置正确的SSL连接。注意!!!:allowPublicKeyRetrieval=true可能在某些情况下存在安全风险,因为它允许客户端从服务器获取RSA公钥
jdbc:mysql://localhost:3306/mydatabase?allowPublicKeyRetrieval=true&useSSL=false
USE mysql;
ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
FLUSH PRIVILEGES;
# 命令行执行
mysql -e "source batch-file"
mysql -h host -u user -p < batch-file
# 先登录mysql客户端,然后运行如下语句:
mysql> source /path/filename;
用户可以分为普通用户和root用户,root属于超级管理员
select host, user from user;
create user 'zhang3'@'localhost' identified by 'adb123'; # 默认@'%'
show grants; # 查看权限
update user set user='wang5' where user='li4' and host = '%';
flush privieges;
drop user 'wang5', 'li4'@'localhost'; # 推荐使用
delete from mysql.user where user='zhang3' and host = '%'; # 不推荐
# 修改用户密码
alter user user() identified by 'adbabc';
set password='adbabc';
# 修改其他用户密码, root执行
alter user 'zhang3'@'%' identified by 'hello';
set password for 'zhang3'@'%'='hello123';
密码管理:
alter user 'zhang3'@'%' password expire;
set persist default_password_lifetime = 180; # 或者配置文件中添加
create user 'kangshifu'@'%' password expire interval 90 day; # 每90天过期
create user 'kangshifu'@'%' password expire never; # 永不过期
password_history=3 # 不得与最近3个密码相同
password_reuse_interval=365 # 365天内不可相同
show privileges;
grant select, update on dbtest1.* to 'zhang3'@'%';
grant all privileges on *.* to 'li4'@'%'; # 不能给别人赋权,需要with grant option
# 收回权限
revoke all privileges on *.* from joe@'%';
因篇幅问题不能全部显示,请点此查看更多更全内容