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

2.10.2. Обеспечение Учетных записей MySQL Initial

Часть процесса установки MySQL должна установить mysql база данных, которая содержит таблицы предоставления:

mysql.user таблица предоставления определяет начальные учетные записи пользователей MySQL и их права доступа:

Вывести на экран, какие учетные записи существуют в mysql.user таблица и проверяет, пусты ли их пароли, используйте следующий оператор:

mysql> SELECT User, Host, Password FROM
        mysql.user;+------+--------------------+----------+| User | Host               | Password |+------+--------------------+----------+| root | localhost          |          || root | myhost.example.com |          || root | 127.0.0.1          |          || root | ::1                |          ||      | localhost          |          ||      | myhost.example.com |          |+------+--------------------+----------+

Этот вывод указывает, что есть несколько root и анонимные учетные записи пользователей, ни у одних из которых нет паролей. Вывод мог бы разойтись в Вашей системе, но присутствие учетных записей с пустыми паролями означает, что Ваша установка MySQL незащищена, пока Вы не делаете с этим что-то:

Кроме того, mysql.db таблица содержит строки, которые разрешают все учетные записи доступу test база данных и другие базы данных с именами, которые запускаются с test_. Это - истина даже для учетных записей, у которых иначе нет никаких специальных полномочий, таких как значение по умолчанию анонимные учетные записи. Это удобно для того, чтобы протестировать, но нецелесообразный на производственных серверах. Администраторы, которые хотят доступ к базе данных, ограниченный только учетным записям, которым предоставили полномочия явно с этой целью, должны удалить их mysql.db строки таблицы.

Следующие инструкции описывают, как установить пароли для начальных учетных записей MySQL, сначала для root учетные записи, затем для анонимных учетных записей. Инструкции также покрывают, как удалить анонимные учетные записи, должны Вы предпочитать не разрешать анонимный доступ вообще, и описывать, как удалить разрешающий доступ, чтобы протестировать базы данных. Замена newpwd в примерах с паролем, который Вы хотите использовать. Замена host_name с именем узла сервера. Можно определить это имя от вывода предыдущего SELECT оператор. Для показанного вывода, host_name myhost.example.com.

Отметить

Для дополнительной информации об установке паролей см. Раздел 6.3.5, "Присваивая Пароли Учетной записи". Если Вы забываете Ваш root пароль после установки этого, см. Раздел C.5.4.1, "Как Сбросить Корневой Пароль".

Вы могли бы хотеть задержать установку паролей до позже, избежать потребности определить их, в то время как Вы выполняете дополнительную установку или тестирование. Однако, убедитесь, что установили их перед использованием своей установки в производственных целях.

Чтобы установить дополнительные учетные записи, см. Раздел 6.3.2, "Добавляя Учетные записи пользователей".

Присвоение root Пароли учетной записи

root пароли учетной записи могут быть установлены несколько путей. Следующее обсуждение демонстрирует три метода:

Присваивать использование паролей SET PASSWORD, соединитесь с сервером как root и проблема a SET PASSWORD оператор для каждого root учетная запись, перечисленная в mysql.user таблица. Убедитесь, что зашифровали пароль, используя PASSWORD() функция.

Для Windows сделайте это:

shell> mysql -u rootmysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');mysql> SET
        PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('newpwd');mysql> SET PASSWORD FOR 'root'@'::1' = PASSWORD('newpwd');mysql> SET
        PASSWORD FOR 'root'@'%' = PASSWORD('newpwd');

Последний оператор является ненужным если mysql.user таблица имеет нет root учетная запись со значением узла %.

Для Unix сделайте это:

shell> mysql -u rootmysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');mysql> SET
        PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('newpwd');mysql> SET PASSWORD FOR 'root'@'::1' = PASSWORD('newpwd');mysql> SET
        PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');

Можно также использовать единственный оператор, который присваивает пароль всем root учетные записи при использовании UPDATE изменить mysql.user представьте в виде таблицы непосредственно. Этот метод работает над любой платформой:

shell> mysql -u rootmysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')    ->     WHERE
        User = 'root';mysql> FLUSH PRIVILEGES;

FLUSH оператор заставляет сервер перечитывать таблицы предоставления. Без этого изменение пароля остается незамеченным сервером, пока Вы не перезапускаете это.

Присваивать пароли root учетные записи используя mysqladmin, выполните следующие команды:

shell> mysqladmin -u root password "newpwd"shell> mysqladmin
        -u root -h host_name password "newpwd"
    

Те команды применяются и к Windows и к Unix. Двойные кавычки вокруг пароля не всегда необходимы, но следует использовать их, если пароль содержит пробелы или другие символы, которые являются особенными для Вашего интерпретатора команд.

mysqladmin метод установки root пароли учетной записи не работают на 'root'@'127.0.0.1' или 'root'@'::1' учетная запись. Используйте SET PASSWORD метод, показанный ранее.

После root пароли были установлены, следует предоставить соответствующий пароль всякий раз, когда Вы соединяетесь как root к серверу. Например, чтобы завершить работу сервера с mysqladmin, используйте эту команду:

shell> mysqladmin -u root -p shutdownEnter password: (enter root password here)

Присвоение Анонимных Паролей Учетной записи

mysql команды в следующих инструкциях включают a -p опция базировалась при условии, что Вы установили root пароли учетной записи, используя предыдущие инструкции и должны определить что пароль, соединяясь с сервером.

Чтобы присвоить пароли анонимным учетным записям, соединитесь с сервером как root, тогда используйте также SET PASSWORD или UPDATE. Убедитесь, что зашифровали пароль, используя PASSWORD() функция.

Использовать SET PASSWORD на Windows сделайте это:

shell> mysql -u root -pEnter password: (enter root password here)mysql> SET
        PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');

Использовать SET PASSWORD на Unix сделайте это:

shell> mysql -u root -pEnter password: (enter root password here)mysql> SET
        PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');mysql> SET PASSWORD FOR ''@'host_name' =
        PASSWORD('newpwd');

Установить пароли анонимной учетной записи пользователя с синглом UPDATE оператор, сделайте это (на любой платформе):

shell> mysql -u root -pEnter password: (enter root password here)mysql> UPDATE
        mysql.user SET Password = PASSWORD('newpwd')    ->     WHERE User = '';mysql> FLUSH
        PRIVILEGES;

FLUSH оператор заставляет сервер перечитывать таблицы предоставления. Без этого изменение пароля остается незамеченным сервером, пока Вы не перезапускаете это.

Удаление Анонимных Учетных записей

Если Вы предпочитаете удалять какие-либо анонимные учетные записи вместо того, чтобы присвоить их пароли, сделайте так, как следует Windows:

shell> mysql -u root -pEnter password: (enter root password here)mysql> DROP
        USER ''@'localhost';

На Unix удалите анонимные учетные записи как это:

shell> mysql -u root -pEnter password: (enter root password here)mysql> DROP
        USER ''@'localhost';mysql> DROP USER ''@'host_name';

Обеспечение Тестовых Баз данных

По умолчанию, mysql.db таблица содержит строки, которые разрешают доступ любым пользователем к test база данных и другие базы данных с именами, которые запускаются с test_. (У этих строк есть пустое User значение столбца, которое в проверяющих доступ целях соответствует любое имя пользователя.) Это означает, что такие базы данных могут использоваться даже учетными записями, которые иначе не обладают никакими полномочиями. Если Вы хотите удалить доступ любого-пользователя, чтобы протестировать базы данных, сделайте так следующим образом:

shell> mysql -u root -pEnter password: (enter root password here)mysql> DELETE
        FROM mysql.db WHERE Db LIKE 'test%';mysql> FLUSH
        PRIVILEGES;

FLUSH оператор заставляет сервер перечитывать таблицы предоставления. Без этого изменение полномочия остается незамеченным сервером, пока Вы не перезапускаете это.

С предыдущим изменением, только пользователи, у которых есть глобальные полномочия базы данных или полномочия, предоставленные явно для test база данных может использовать это. Однако, если Вы не хотите, чтобы база данных существовала вообще, отбросьте ее:

mysql> DROP DATABASE test;
Отметить

На Windows можно также выполнить процесс, описанный в этом разделе, используя Мастер Конфигурации (см. Диалоговое окно Опций Безопасности). На других платформах распределение MySQL включает mysql_secure_installation, утилита командной строки, которая автоматизирует большую часть процесса обеспечения установки MySQL.