Spec-Zone.ru › MySQL 5.7

21.6.18.3 Процедуры безопасности NDB Cluster и MySQL

В этом разделе мы обсудим стандартные процедуры безопасности MySQL, применяемые при работе с NDB Cluster.

В общем случае любые стандартные процедуры для безопасной работы с MySQL также применимы к работе сервера MySQL в составе NDB Cluster. Прежде всего, вы всегда должны запускать сервер 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]. В качестве альтернативы вы можете запустить процесс сервера MySQL с помощью --user=mysql в командной строке, но предпочтительно использовать опцию my.cnf, так как вы можете забыть использовать опцию командной строки и, таким образом, mysqld будет работать от другого пользователя непреднамеренно. Скрипт запуска mysqld_safe заставляет MySQL работать от пользователя mysql.

Важно

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

Как упоминалось в предыдущем разделе (см. Раздел 21.6.18.2, «NDB Cluster и привилегии MySQL»), вы всегда должны установить пароль для root-пользователя сервера 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. Не забудьте выполнить оператор FLUSH PRIVILEGES сразу после изменения таблицы mysql.user, чтобы изменения вступили в силу немедленно. Без FLUSH PRIVILEGES изменения не вступят в силу до следующей перезагрузки сервера.

Примечание

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

Дополнительную информацию об этих утилитах см. в разделе 21.5, «Программы NDB Cluster».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/mysql-cluster-security-mysql-security-procedures.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API