Spec-Zone .ru
спецификации, руководства, описания, API
|
Часть процесса установки MySQL должна установить mysql
база данных, которая
содержит таблицы предоставления:
Дистрибутивы Windows содержат предварительно инициализированные таблицы предоставления.
На Unix mysql_install_db программа заполняет таблицы предоставления. Некоторые методы установки, выполненные эта программа для Вас. Другие требуют, чтобы Вы выполнили это вручную. Для получения дополнительной информации см. Раздел 2.10.1, "Постпроцессы установки Unix".
mysql.user
таблица предоставления определяет начальные учетные записи пользователей
MySQL и их права доступа:
У некоторых учетных записей есть имя пользователя root
.
Они - учетные записи суперпользователя, которые имеют все полномочия и могут сделать что-либо. Начальная
буква root
пароли учетной записи пусты, таким образом, любой может
соединиться с сервером MySQL как root
без
пароля и быть предоставленным все полномочия.
На Windows, root
учетные записи создаются
что соединения разрешения из локального узла только. Соединения могут быть сделаны,
определяя имя хоста localhost
, IP-адрес 127.0.0.1
,
или адрес IPv6 ::1
. Если пользователь выбирает Включать корневой доступ из удаленной машинной опции во
время установки, Установщик Windows создает другого root
учетная запись, которая разрешает соединения от любого узла.
На Unix, каждом root
считайте разрешает
соединения от локального узла. Соединения могут быть сделаны, определяя имя хоста localhost
, IP-адрес 127.0.0.1
,
адрес IPv6 ::1
, или фактическое имя хоста или IP-адрес.
Попытка соединиться с узлом 127.0.0.1
обычно решения к localhost
учетная запись. Однако, это перестало работать, если сервер
выполняется с --skip-name-resolve
опция, таким образом, 127.0.0.1
учетная запись полезна в этом случае. ::1
учетная запись используется
для соединений IPv6.
Некоторые учетные записи для анонимных пользователей. У них есть пустое имя пользователя. У анонимных учетных записей нет никакого пароля, таким образом, любой может использовать их, чтобы соединиться с сервером MySQL.
На Windows есть одна анонимная учетная запись, которая разрешает
соединения от локального узла. Соединения могут быть сделаны, определяя имя хоста localhost
.
На Unix каждая анонимная учетная запись разрешает соединения от
локального узла. Соединения могут быть сделаны, определяя имя хоста localhost
для одной из учетных записей, или фактического имени хоста или IP-адреса для другого.
Вывести на экран, какие учетные записи существуют в 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 root
учетная
запись.
Если Вы хотите препятствовать тому, чтобы клиенты соединились как анонимные пользователи без пароля, следует или присвоить пароль каждой анонимной учетной записи или иначе удалить учетные записи.
Кроме того, 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
оператор
Используйте UPDATE
оператор
Используйте mysqladmin клиентскую программу командной строки
Присваивать использование паролей SET
PASSWORD
, соединитесь с сервером как root
и проблема a SET PASSWORD
оператор для каждого root
учетная
запись, перечисленная в mysql.user
таблица. Убедитесь, что зашифровали пароль,
используя PASSWORD()
функция.
Для Windows сделайте это:
shell>mysql -u root
mysql>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('
mysql>newpwd
');SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('
mysql>newpwd
');SET PASSWORD FOR 'root'@'::1' = PASSWORD('
mysql>newpwd
');SET PASSWORD FOR 'root'@'%' = PASSWORD('
newpwd
');
Последний оператор является ненужным если mysql.user
таблица имеет нет root
учетная запись со значением узла %
.
Для Unix сделайте это:
shell>mysql -u root
mysql>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('
mysql>newpwd
');SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('
mysql>newpwd
');SET PASSWORD FOR 'root'@'::1' = PASSWORD('
mysql>newpwd
');SET PASSWORD FOR 'root'@'
host_name
' = PASSWORD('newpwd
');
Можно также использовать единственный оператор, который присваивает пароль всем root
учетные записи при использовании UPDATE
изменить mysql.user
представьте в виде
таблицы непосредственно. Этот метод работает над любой платформой:
shell>mysql -u root
mysql>UPDATE mysql.user SET Password = PASSWORD('
->newpwd
')WHERE User = 'root';
mysql>FLUSH PRIVILEGES;
FLUSH
оператор заставляет сервер перечитывать таблицы предоставления. Без этого
изменение пароля остается незамеченным сервером, пока Вы не перезапускаете это.
Присваивать пароли root
учетные записи используя mysqladmin, выполните следующие команды:
shell>mysqladmin -u root password "
shell>newpwd
"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 shutdown
Enter password:(enter root password here)
mysql команды в следующих инструкциях включают a -p
опция базировалась при условии, что Вы установили root
пароли учетной записи, используя предыдущие инструкции и должны определить что пароль, соединяясь с сервером.
Чтобы присвоить пароли анонимным учетным записям, соединитесь с сервером как root
,
тогда используйте также SET PASSWORD
или UPDATE
. Убедитесь, что зашифровали пароль, используя PASSWORD()
функция.
Использовать SET PASSWORD
на Windows сделайте это:
shell>mysql -u root -p
Enter password:(enter root password here)
mysql>SET PASSWORD FOR ''@'localhost' = PASSWORD('
newpwd
');
Использовать SET PASSWORD
на Unix сделайте это:
shell>mysql -u root -p
Enter password:(enter root password here)
mysql>SET PASSWORD FOR ''@'localhost' = PASSWORD('
mysql>newpwd
');SET PASSWORD FOR ''@'
host_name
' = PASSWORD('newpwd
');
Установить пароли анонимной учетной записи пользователя с синглом UPDATE
оператор, сделайте это (на любой платформе):
shell>mysql -u root -p
Enter password:(enter root password here)
mysql>UPDATE mysql.user SET Password = PASSWORD('
->newpwd
')WHERE User = '';
mysql>FLUSH PRIVILEGES;
FLUSH
оператор заставляет сервер перечитывать таблицы предоставления. Без этого
изменение пароля остается незамеченным сервером, пока Вы не перезапускаете это.
Если Вы предпочитаете удалять какие-либо анонимные учетные записи вместо того, чтобы присвоить их пароли, сделайте так, как следует Windows:
shell>mysql -u root -p
Enter password:(enter root password here)
mysql>DROP USER ''@'localhost';
На Unix удалите анонимные учетные записи как это:
shell>mysql -u root -p
Enter password:(enter root password here)
mysql>DROP USER ''@'localhost';
mysql>DROP USER ''@'
host_name
';
По умолчанию, mysql.db
таблица содержит строки, которые разрешают доступ любым
пользователем к test
база данных и другие базы данных с именами, которые
запускаются с test_
. (У этих строк есть пустое User
значение столбца, которое в проверяющих доступ целях соответствует любое имя пользователя.) Это означает, что
такие базы данных могут использоваться даже учетными записями, которые иначе не обладают никакими полномочиями.
Если Вы хотите удалить доступ любого-пользователя, чтобы протестировать базы данных, сделайте так следующим
образом:
shell>mysql -u root -p
Enter password:(enter root password here)
mysql>DELETE FROM mysql.db WHERE Db LIKE 'test%';
mysql>FLUSH PRIVILEGES;
FLUSH
оператор заставляет сервер перечитывать таблицы предоставления. Без этого
изменение полномочия остается незамеченным сервером, пока Вы не перезапускаете это.
С предыдущим изменением, только пользователи, у которых есть глобальные полномочия базы данных или полномочия,
предоставленные явно для test
база данных может использовать это. Однако, если Вы
не хотите, чтобы база данных существовала вообще, отбросьте ее:
mysql> DROP DATABASE test;
На Windows можно также выполнить процесс, описанный в этом разделе, используя Мастер Конфигурации
(см.