1.登录MySQL
mysql -u root -p
输入您的密码
2.选择 mysql 数据库
use mysql;
因为 mysql 数据库中存储了用户信息的 user 表。
3.在 mysql 数据库的 user 表中查看当前 root 用户的相关信息
select host, user, authentication_string, plugin from user;
执行完上面的命令后会显示一个表格
查看表格中 root 用户的 host,默认应该显示的 localhost,只支持本地访问,不允许远程访问。
我们看host和user两列,host和user中root对应的值为localhost,即root用户的访问权限为localhost,想把该用户的访问权限设置可远程连接,我们只需要把localhost更改为通配的%就可以了。上面的权限操作语句没有走通,这里就直接使用update语句来更改吧。
update user set host = "%" where user = "root";
修改之后就将root用户的访问权限设置成了可远程访问了。
FLUSH PRIVILEGES;
systemctl start firewalld # 开启防火墙
systemctl stop firewalld # 关闭防火墙
systemctl status firewalld #检查防火墙状态
一般需要关闭防火墙才能连接。关闭远端服务器防火墙后,可以连接了
如果你觉得关闭防火墙不安全,可打开远端服务器的iptables(安装或升级命令“yum install iptables”)(我用root用户登录的),并用“vi /etc/sysconfig/iptables”检查3306端口是否打开,如没有,在文件中加入“-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT”(如下所示),保存文件并用“service iptables restart”命令重启iptables
项目连接mysql时报caching_sha2_password错误
重点看caching_sha2_password这个,由于我安装的mysql是8.0的版本,
mysql8.0和5.x其中一个改动就是加密认证方式发生改变,
caching_sha2_password是8.0
mysql_native_password是5.x
解决方案有两个:
1,更改mysql的加密认证方式,更改方法请参考:https://blog.csdn.net/h996666/article/details/80921913
2,更改mysql的jdbc版本,直接在xx.pom修改版本号即可。
mysql jdbc的maven链接:http://mvnrepository.com/artifact/mysql/mysql-connector-java
8.0.x之后的应该都是可以的
我选择了第2个方案,第一个方案没试过。
我继续跑项目又遇到:
Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
原因:
同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞;
解决方法:
解决方法:
1、提高允许的max_connection_errors数量:
① 进入Mysql数据库查看max_connection_errors: show variables like '%max_connect_errors%';
② 修改max_connection_errors的数量为1000: set global max_connect_errors = 1000;
③ 查看是否修改成功:show variables like '%max_connect_errors%';
2、使用mysqladmin flush-hosts 命令清理一下hosts文件(不知道mysqladmin在哪个目录下可以使用命令查找:whereis mysqladmin);
① 在查找到的目录下使用命令修改:mysqladmin --socket=/tmp/kkimdb.sock --port=3306 -uhyman -p flush-hosts
备注: 配置有master/slave主从数据库的要把主库和从库都修改一遍的(我就吃了这个亏明明很容易的几条命令结果折腾了大半天);
mysql> flush hosts; 也可以
max_connect_errors是一个MySQL中与安全有关的计数器值,它负责阻止过多尝试失败的客户端以防止暴力破解密码的情况。max_connect_errors的值与性能并无太大关系。
默认情况下,my.cnf文件中可能没有此行,如果需要设置此数值,手动添加即可。
[root@www ~]# vi /etc/my.cnf
max_connect_errors = 1000
配置说明
当此值设置为10时,意味着如果某一客户端尝试连接此MySQL服务器,但是失败(如密码错误等等)10次,则MySQL会无条件强制阻止此客户端连接。
如果希望重置此计数器的值,则必须重启MySQL服务器或者执行 mysql> flush hosts; 命令。
当这一客户端成功连接一次MySQL服务器后,针对此客户端的max_connect_errors会清零。
影响与错误形式
如果max_connect_errors的设置过小,则网页可能提示无法连接数据库服务器;
而通过SSH的mysql命令连接数据库,则会返回 ERROR 1129 (00000): Host 'gateway' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 错误。
功能与作用
一般来说建议数据库服务器不监听来自网络的连接,仅仅通过sock连接,这样可以防止绝大多数针对mysql的攻击;如果必须要开启mysql的网络连接,则最好设置此值,以防止穷举密码的攻击手段。