Spec-Zone .ru
спецификации, руководства, описания, API

17.5.11.3. MySQL Cluster и MySQL Security Procedures

В этом разделе мы обсуждаем меры безопасности стандарта MySQL, поскольку они применяются к рабочему MySQL Cluster.

Вообще, любая стандартная процедура для рабочего MySQL надежно также применяется к выполнению MySQL Server как часть MySQL Cluster. Прежде всего следует всегда выполнять MySQL Server как mysql системный пользователь; это не отличается от рабочего MySQL в стандарте (некластер) среда. mysql системная учетная запись должна быть уникально и ясно определена. К счастью, это - поведение значения по умолчанию для новой установки MySQL. Можно проверить, что процесс mysqld работает как системный пользователь mysql при использовании системной команды такой как один показанный здесь:

shell> ps aux | grep mysqlroot     10467  0.0  0.1   3616  1380 pts/3    S    11:53   0:00 \  /bin/sh ./mysqld_safe --ndbcluster --ndb-connectstring=localhost:1186mysql    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.errjon      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] раздел. Альтернативно, можно запустить серверный процесс MySQL с --user=mysql на командной строке, но предпочтительно использовать my.cnf опция, так как Вы могли бы забыть использовать параметр командной строки и так иметь mysqld, работающий как другой пользователь неумышленно. Сценарий запуска mysqld_safe вынуждает MySQL работать как mysql пользователь.

Важный

Никогда не выполняйте mysqld как системного пользователя root. Делая, таким образом, средства, что потенциально любой файл на системе может быть считан MySQL, и таким образом — должны MySQL поставиться под угрозу — атакующим.

Как упомянуто в предыдущем разделе (см. Раздел 17.5.11.2, "MySQL Cluster и MySQL Privileges"), следует всегда устанавливать корневой пароль для MySQL Server, как только у Вас есть это выполнение. Следует также удалить анонимную учетную запись пользователя, которая устанавливается по умолчанию. Можно выполнить эти задачи, используя следующие операторы:

shell> mysql -u rootmysql> 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, изменения не вступают в силу до следующего раза, когда сервер перезапускается.

Отметить

Многие из утилит MySQL Cluster, таких как ndb_show_tables, ndb_desc, и ndb_select_all также работают без аутентификации и могут показать имена таблиц, схемы, и данные. По умолчанию они устанавливаются на системах Стиля Unix с полномочиями wxr-xr-x (755), что означает, что они могут быть выполнены любым пользователем, который может получить доступ mysql/bin каталог.

См. Раздел 17.4, "MySQL Cluster Programs", для получения дополнительной информации об этих утилитах.