NDB群集和MySQL安全性过程
在本节中,我们将讨论适用于运行NDB群集的MySQL标准安全性过程。
通常,任何安全运行MySQL的标准过程也适用于将MySQL Server作为NDB群集的一部分运行。首先,您应该始终以mysql
操作系统用户身份运行MySQL Server ;这与在标准(非集群)环境中运行MySQL没什么不同。该mysql
系统帐户应该被唯一和明确的规定。幸运的是,这是新安装的MySQL的默认行为。您可以通过使用系统命令(如此处所示的命令)来验证mysqld进程是否以mysql
操作系统用户身份运行:
shell>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数据目录(使用mysqld的--datadir
选项设置),并且该部分中包括SQL节点的文件。或者,您可以使用以下命令启动MySQL服务器进程mysql
my.cnf
user=mysql
[mysqld]
--user=mysql
在命令行上,但是最好使用该my.cnf
选项,因为您可能会忘记使用命令行选项,因此mysqld会无意中以另一个用户身份运行。该mysqld_safe的启动脚本强制MySQL作为运行mysql
用户。
重要切勿以系统root用户身份运行mysqld。这样做意味着MySQL可以潜在地读取系统上的任何文件,因此-攻击者应将MySQL破坏(应将MySQL破坏)。
如上一节所述(请参见“ NDB群集和MySQL特权”),运行MySQL服务器后,应始终为其设置根密码。您还应该删除默认情况下安装的匿名用户帐户。您可以使用以下语句完成这些任务:
shell> 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用户。确保在FLUSH PRIVILEGES
修改mysql.user
表后立即运行该语句,以使更改立即生效。如果不使用FLUSH PRIVILEGES
,则更改将在下次重新启动服务器之前生效。
许多NDB群集实用程序(例如ndb_show_tables,ndb_desc和ndb_select_all)也无需身份验证即可工作,并且可以显示表名称,模式和数据。默认情况下,这些文件以权限wxr-xr-x
(755)安装在Unix风格的系统上,这意味着它们可以由可以访问该mysql/bin
目录的任何用户执行。
有关这些实用程序的更多信息,请参见“ NDB群集程序”。