Spec-Zone .ru
спецификации, руководства, описания, API
|
В этом разделе мы обсуждаем меры безопасности стандарта MySQL, поскольку они применяются к рабочему MySQL Cluster.
Вообще, любая стандартная процедура для рабочего MySQL надежно также применяется к выполнению MySQL Server как
часть MySQL Cluster. Прежде всего следует всегда выполнять MySQL Server как mysql
системный пользователь; это не отличается от рабочего 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: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 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
, изменения не вступают в силу до следующего раза, когда
сервер перезапускается.
Многие
из утилит MySQL Cluster, таких как ndb_show_tables, ndb_desc, и ndb_select_all также работают без аутентификации и могут
показать имена таблиц, схемы, и данные. По умолчанию они устанавливаются на системах Стиля Unix с
полномочиями wxr-xr-x
(755), что означает, что они могут быть выполнены любым
пользователем, который может получить доступ mysql/bin
каталог.
См. Раздел 17.4, "MySQL Cluster Programs", для получения дополнительной информации об этих утилитах.