使用插件 auth_socket 时,Mysql 5.7 上另一台虚拟机(本地网络)的 root 用户

使用插件 auth_socket 时,Mysql 5.7 上另一台虚拟机(本地网络)的 root 用户

我有一台虚拟机用于我的网站,还有一台虚拟机用于我的数据库(mysql 5.7)。虚拟机运行在 Debian 9 上

我想从我的网站 VM 连接到 mysql。

我使用 ansible 安装所有内容,因此它不会创建 root 密码,这意味着它默认使用插件 auth_socket。这也意味着我无法使用该 VM 的 root 用户从我的网站 VM 进行连接。如果我在数据库 VM 上并以 root 系统用户身份使用,我只能连接到 root 帐户(除非您知道如何更改这一点)。

所以我不知道具体该怎么做,但我找到了两个解决方案: - 将密码赋予 root 并更改插件以使用类似这里的密码https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/ - 创建一个名为“root2”的新用户,并授予其仅在本地网络上的完整权限

我还有什么其他解决方案?哪一个看起来最佳?

答案1

您不能使用来自另一台机器的身份验证套接字,您需要创建一个带有密码的 mysql 用户并通过 tcp/ip 进行连接。

不要使用 root,这是个坏主意。我建议使用选项 3:

创建一个新用户(通常每个应用程序都有自己的用户和数据库),并赋予其尽可能少的权限和尽可能少的对象(最小特权原则)。使用 root 会赋予您的 Web 服务器创建或删除数据库、用户、设置运行时配置等权限。所有这些都是不必要的,而且很危险。

Ansible 提供了 mysql_user 可以创建数据库用户:https://docs.ansible.com/ansible/latest/modules/mysql_user_module.html

然后更新 Web 服务器上的连接字符串,并确保数据库服务器上可以访问 tcp/ip 端口 3306。理想情况下仅有的你的开发 IP 和网络服务器应该被允许(再次使用最小特权方法。参见http://en.wikipedia.org/wiki/Principle_of_least_privilege)。

相关内容