Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  NDB Cluster and MySQL Security Procedures

25.6.21.3 NDB 集群和 MySQL 安全程序

在本节中,我们讨论了 MySQL 标准安全程序如何应用于运行 NDB 集群。

一般来说,任何标准的 MySQL 安全程序也适用于运行 MySQL 服务器作为 NDB 集群的一部分。首先,您应该总是以 mysql 操作系统用户身份运行 MySQL 服务器;这与在标准(非集群)环境中运行 MySQL 没有什么不同。 mysql 系统账户应该是唯一的和明确的。幸运的是,这是新的 MySQL 安装的默认行为。你可以使用系统命令来验证 mysqld 进程是否以 mysql 操作系统用户身份运行,如下所示:

$> ps aux | grep mysql
root     10467  0.0  0.1   3616  1380 pts/3    S    11:53   0:00 \
  /bin/sh ./mysqld_safe --ndbcluster --ndb-connectstring=localhost:1186
mysql    10512  0.2  2.5  58528 26636 pts/3    Sl   11:53   0:00 \
  /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql \
  --datadir=/usr/local/mysql/var --user=mysql --ndbcluster \
  --ndb-connectstring=localhost:1186 --pid-file=/usr/local/mysql/var/mothra.pid \
  --log-error=/usr/local/mysql/var/mothra.err
jon      10579  0.0  0.0   2736   688 pts/0    S+   11:54   0:00 grep mysql

如果 mysqld 进程不是以 mysql 用户身份运行的,那么您应该立即关闭它,并以 mysql 用户身份重新启动。如果该用户不存在于系统中,那么 mysql 用户账户应该被创建,并且该用户应该是 mysql 用户组的一部分;在这种情况下,您还应该确保 MySQL 数据目录(使用 --datadir 选项为 mysqld 设置的)由 mysql 用户拥有,并且 SQL 节点的 my.cnf 文件包括 user=mysql[mysqld] 部分。或者,您可以使用 --user=mysql 在命令行上启动 MySQL 服务器进程,但使用 my.cnf 选项是首选,因为您可能会忘记使用命令行选项,从而导致 mysqld 以其他用户身份运行。 mysqld_safe 启动脚本强制 MySQL 以 mysql 用户身份运行。

Important

永远不要以系统根用户身份运行 mysqld。这样做意味着 MySQL 可以读取系统上的任何文件,从而如果 MySQL 被攻破,攻击者也可以读取这些文件。

如前一节所述(见 第 25.6.21.2 节,“NDB 集群和 MySQL 权限”),您应该尽快为 MySQL 服务器设置根密码,并删除默认安装的匿名用户账户。您可以使用以下语句来完成这些任务:

$> mysql -u root

mysql> UPDATE mysql.user
    ->     SET Password=PASSWORD('secure_password')
    ->     WHERE User='root';

mysql> DELETE FROM mysql.user
    ->     WHERE User='';

mysql> FLUSH PRIVILEGES;

在执行 DELETE 语句时,请小心不要遗漏 WHERE 子句,否则您将删除 所有 MySQL 用户。确保在修改 mysql.user 表后立即运行 FLUSH PRIVILEGES 语句,以便更改立即生效。否则,直到服务器下次重新启动时更改才生效。

Note

许多 NDB 集群实用程序,如 ndb_show_tables, ndb_descndb_select_all 也可以在不需要身份验证的情况下工作,并可以显示表名、模式和数据。默认情况下,这些实用程序在 Unix 风格的系统上安装时具有权限 wxr-xr-x(755),这意味着任何可以访问 mysql/bin 目录的用户都可以执行这些实用程序。

查看 第 25.5 节,“NDB 集群程序”,以获取这些实用程序的更多信息。