允许 mysql 用户仅由指定用户使用

允许 mysql 用户仅由指定用户使用

目前任何系统用户都可以运行:

systemuser$ mysql -u mysqluser -p

(假设他知道密码)。

有没有办法拒绝 mysql(cli)使用特定的 mysql 用户?

例如。

systemuser$   mysql -u mysqluser -p'validmypass'
   (success)
otheruser$    mysql -u mysqluser -p'validpass'
   (you don't have access)
otheruser$    mysql -u anotheruser -p'validpass'
   (success)

(即只有特定的系统用户才可以使用特定的 mysql 用户)。

答案1

我不认为这是个好主意。mysqld 进程正在监听某个端口(3306)上的网络,因此阻止特定系统用户使用特定 mysql 用户名连接到特定端口可能很困难。如果您不想让某些人登录,为什么要给他们 mysql 密码?您想通过这样的设置实现什么?

但是,您可以:

  1. 禁止部分本地用户使用mysql命令(此时他们可以使用其他软件登录),详情见:防止用户运行某些程序最简单的方法是更改​​ /usr/bin/mysql 的文件权限,但这样用户仍然可以在系统上运行 mysql 的其他副本。即使您阻止了这一点,他们也可以使用其他软件进行连接。

  2. 拒绝某些本地用户连接到 mysql 端口。有关详细信息,请参阅此问题:如何阻止本地用户访问本地端口?

答案2

标准 mysql 身份验证中的用户由用户名和主机部分 (username@host) 组成,并受密码保护。就是这样。如果您想使用标准 MySQL 用户身份验证,则无法完全实现这一点。

有多种方法可以在 MySQL 中进行操作系统身份验证,但这是有据可查的。例如 PAM 身份验证:http://dev.mysql.com/doc/refman/5.6/en/pam-authentication-plugin.html

另一种方法(MySQL 5.6+)可能是更改密码,这样任何用户都不知道,然后使用 MySQL 配置编辑器http://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html创建特定用户可以访问的登录文件,或将其放在主目录中。这样只有特定用户才能看到配置

相关内容