问题一:今天在使用datagrip数据库连接工具时,刷新Linux服务器上docker容器部署的mysql服务的连接时,出现下面错误:
packet for query is too large (5,036 > 1,024). you can change this value on the server by setting the 'max_allowed_packet' variable.
出现的原因可能是:
mysql会根据配置文件限制server接受的数据包大小。有时候大的插入和更新会受max_allowed_packet 参数限制,导致写入或者更新失败,导致项目访问异常。
解决方案:
1、docker容器进入mysql:
docker exec -it XXXXX /bin/bash;
mysql -uroot -p回车输入mysql密码
2、查看max_allowed_packet最大允许包
show VARIABLES like '%max_allowed_packet%';
3、更改max_allowed_packet包大小
3.1、临时方案
临时修改:输入命令 set global max_allowed_packet = 210241024*10; (注意,这里的大小只能填写字节。重启mysql服务后,配置将会失效!)然后关闭掉这此mysql server链接,再进入查看。
3.2、修改my.ini文件
在[mysqld]部分加入 max_allowed_packet=XXXX
重启mysql后永久生效
以上内容原文来自参考链接: MySQL max_allowed_packet设置及问题,感谢博主🙏
问题二:在创建数据库的schema时,报错:
[42000][1044] Access denied for user 'root'@'%' to database 'XXXX'.
看报错信息是提示远程连接权限不足;
解决方案
登录进入mysql服务
这里为刚才创建的root@% 用户授予所有数据库的所有表的所有操作访问权限
grant all privileges on *.* to 'root'@'%' identified by 'xxx此处为密码xxx' with grant option;
回车执行发现报错:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'root' with grant option' at line 1
研究在网上找了其他博主的解决方案,最后:
grant all privileges on *.* to 'root'@'%' with grant option;
刷新权限
flush privileges;
设置权限后一定要重启mysql或者docker容器里的mysql服务
再次创建数据库的schema,成功创建!!!