alter user 'hao'@'%' identified by 'lihao@123456' password expire never;
alter user'hao'@'%' identified with mysql_native_password by 'lihao@123456';
grant all privileges on surveyking.* to 'hao'@'%';
flush privileges;
复制代码
一些问题
mysql8容器启动后如果一直登录不上(暗码错误),Access denied for user 'root'@'localhost' (use Password Yes) 可以开启免密登录,初始化完成再关闭免密登录
因为mysql8更改了登录方式利用暗码加密(明文和密文打八辈子也不等好吧)
如果容器内可以正常进入mysql,其它容器或者我们的navicat远程工具无法连上mysql,需要查抄登录的用户是否是答应的主机地址,select user,host from mysql.user;
如果host是%即答应任何主机地址,那么不可远程毗连很有可能是配置文件bind-address设置了localhost或者127.0.0.1(我遇到的问题),改为0.0.0.0即可
将主机目次下的文件夹挂载到容器的文件夹后,进入到docker容器内对应的挂载目次中,运行下令ls后提示
ls: cannot open directory .: Permission denied
原因是CentOS7中的安全模块selinux把权限禁掉了,解决方法容器启动时--privileged=true
项目启动没有问题,但是一旦访问到数据库响应异常docker logs surveyking-server检察后端项目日记,访问数据库报错如下
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
网上各种答案都说是url没有useSSL=false,各种答案都试过都没得,困扰我灰常的久。尝试将这个jar包运行在主机电脑毗连远程服务器容器的数据库,居然数据库访问就正常了。
解决尝试:navicat试连,用户要有权限,最重要url上的mysql地址在jar包运行的容器中能ping通 (利用自定义的network,能ping通后访问就解决了)
⭐⭐注意,mysql在初始化完后一定要关闭免密登录,否则也会导致上面的问题