远程连接mariadb时提示Accesss denied for user 'root'@'ip'(using password:YES)
在centos7服务器上的docker里面拉了centos镜像,运行该镜像成一个容器后。在该容器里面创建mysql……
步骤是按照腾讯云搭建javaweb环境来的:https://cloud.tencent.com/developer/labs/lab/10035
发现mysql变成了mariadb了,关于msql和mariadb的区别于联系:https://www.jb51.net/article/135170.htm
经过一番折腾,弄好了相关的配置
但是在本地远程连接时一直出现以下的错误
网上关于这个问题的解决大部分都是教修改密码(上面的错误也可能是密码错误引起的)
关于教修改密码的,推荐Stack Overflow上的一个方法,直接看下来,比很多博客写的都要清楚,而且,还有很多不同的情况的讨论,总有一个适合的吧?
https://stackoverflow.com/questions/41645309/mysql-error-access-denied-for-user-rootlocalhost
关于修改密码时有几点提示:
上面的第三步,如果是mariadb的话可能要用下面的命令来重启
systemctl restart mariadb
还有第六步,那条修改密码的命令并不是所有版本的mysql(mariadb)都适用。如果版本不对的话会提示语法错误。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
SET password for 'root'@'localhost'=password('newpassword');
不过,上面修改该密码的操作并不适用于我遇到的错误,后来找到一篇可以解决我遇到的 问题的博客
https://blog.csdn.net/Alger_/article/details/76221404
意思是远程连接数据库的用户名是root,会被拒绝?
所以要创建一个新的用户来进行远程连接,并授予该用户远程连接的权限
mysql>GRANT ALL PRIVILEGES ON *.* TO 'TestUser'@'%' IDENTIFIED BY '此处为TestUser的密码’' WITH GRANT OPTION;
问题解决!