#### 23.6.18.3 NDB 集群和 MySQL 安全程序

[](<>)[](<>)

在本节中，我们将讨论 MySQL 标准安全过程，因为它们适用于运行 NDB Cluster。

通常，安全运行 MySQL 的任何标准过程也适用于将 MySQL 服务器作为 NDB Cluster 的一部分运行。首先，您应该始终将 MySQL 服务器作为`mysql`操作系统用户；这与在标准（非集群）环境中运行 MySQL 没有什么不同。这`mysql`系统帐户应唯一且明确定义。幸运的是，这是新 MySQL 安装的默认行为。您可以验证[**mysqld**](mysqld.html)进程作为`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**](mysqld.html)进程正在以任何其他用户身份运行`mysql`，您应该立即将其关闭并重新启动`mysql`用户。如果系统上不存在此用户，则`mysql`应该创建用户帐户，并且该用户应该是`mysql`用户组；在这种情况下，您还应该确保该系统上的 MySQL 数据目录（如使用[`--数据目录`](server-system-variables.html#sysvar_datadir)选项[**mysqld**](mysqld.html)) 由`mysql`用户，以及 SQL 节点的`我的.cnf`文件包括`用户=mysql`在里面`[mysqld]`部分。或者，您可以使用以下命令启动 MySQL 服务器进程[`--用户=mysql`](server-options.html#option_mysqld_user)在命令行上，但最好使用`我的.cnf`选项，因为您可能会忘记使用命令行选项等[**mysqld**](mysqld.html)无意中以另一个用户身份运行。这[**mysqld\_安全的**](mysqld-safe.html)启动脚本强制 MySQL 作为`mysql`用户。

重要的

从不跑[**mysqld**](mysqld.html)作为系统根用户。这样做意味着系统上的任何文件都可能被 MySQL 读取，因此——如果 MySQL 被攻破——就会被攻击者读取。

[](<>)如上一节所述（见[第 23.6.18.2 节，“NDB 集群和 MySQL 权限”](mysql-cluster-security-mysql-privileges.html))，您应该始终在 MySQL 服务器运行后立即为其设置 root 密码。您还应该删除默认安装的匿名用户帐户。您可以使用以下语句完成这些任务：

```
$> 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.html)声明不要省略`在哪里`条款，否则您可能会删除*全部*MySQL 用户。一定要运行[`刷新特权`](flush.html#flush-privileges)一旦你修改了声明`mysql.user`表，以便更改立即生效。没有[`刷新特权`](flush.html#flush-privileges)，直到下次重新启动服务器时更改才会生效。

笔记

[](<>) [](<>)许多 NDB Cluster 实用程序，例如[**数据库\_显示\_表**](mysql-cluster-programs-ndb-show-tables.html),[**数据库\_描述**](mysql-cluster-programs-ndb-desc.html)， 和[**数据库\_选择\_全部**](mysql-cluster-programs-ndb-select-all.html)也可以在没有身份验证的情况下工作，并且可以显示表名、模式和数据。默认情况下，这些安装在具有权限的 Unix 风格系统上`wxr-xr-x`(755)，这意味着它们可以由任何可以访问`mysql/bin`目录。

看[第 23.5 节，“NDB 集群程序”](mysql-cluster-programs.html), 有关这些实用程序的更多信息。
