Search the MySQL manual:
MySQL Manual

Buy this Reference Manual in softcover from Barnes & Noble!

/ / Up / Table of Contents

4.3.4 Задание изначальных привилегий MySQL

После установки MySQL изначальные привилегии доступа задаются при помощи `scripts/mysql_install_db'. See section 2.3.1 Обзор быстрой установки. Скрипт mysql_install_db запускает сервер mysqld, а затем инициализирует таблицы предоставления привилегий со следующим набором привилегий:

Примечание: В Windows принятые по умолчанию привилегии отличаются от указанных. See section 2.6.2.3 Работа MySQL в среде Windows.

Поскольку сразу после установки программа совершенно не защищена, первым делом необходимо задать пароль для пользователя MySQL root. Это можно сделать следующим образом (обратите внимание, что пароль указывается при помощи функции PASSWORD()):

shell> mysql -u root mysql
mysql> SET PASSWORD FOR root@localhost=PASSWORD('new_password');

Опытные пользователи могут работать непосредственно с таблицами назначения привилегий:

shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('new_password')
    ->     WHERE user='root';
mysql> FLUSH PRIVILEGES;

Еще один способ задать пароль - воспользоваться командой mysqladmin:

shell> mysqladmin -u root password new_password

Изменять пароли других пользователей могут только пользователи с правом записи/обновления базы данных mysql. Все обычные пользователи (не анонимные) могут модифицировать только свой собственный пароль при помощи указанных выше команд или команды SET PASSWORD=PASSWORD('new_password').

Обратите внимание на то, что если пароль в таблице user обновляется напрямую при помощи первого метода, требуется указать серверу на необходимость перезагрузки таблиц привилегий (при помощи команды FLUSH PRIVILEGES), иначе изменения не будут учтены.

После того, как был задан пароль root, этот пароль необходимо будет вводить, подсоединяясь к серверу как root.

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

Ознакомьтесь со скриптом `scripts/mysql_install_db', чтобы увидеть, как задавать привилегии по умолчанию. Данный скрипт можно использовать как основу для добавления других пользователей.

Если необходимо, чтобы изначальные привилегии отличались от указанных выше, можно изменить базу mysql_install_db еще до ее запуска.

Чтобы полностью заново создать таблицы предоставления привилегий, удалите все файлы с расширениями `.frm', `.MYI' и `.MYD' в каталоге, где находится база данных mysql (это каталог с именем mysql в каталоге базы данных, который выводится на экран при запуске команды mysqld --help). Затем запустите скрипт mysql_install_db (возможно, после добавления в него необходимых привилегий).

Примечание: в более старых, чем 3.22.10, версиях MySQL файлы с расширением `.frm' удалять не следует. Если же случайно они были удалены, их следует восстановить, скопировав из дистрибутива MySQL до запуска mysql_install_db.

User Comments

Posted by [name withheld] on Thursday June 27 2002, @8:50am [Delete] [Edit]

That's so important. Check the files
into /var/lib/mysql and make sure the owner is
mysql. Do that with ls -al. If they are root then
change it by typing chown mysql *
That would might solve your problem if you are
trying to log in as root and you can't get it.

Posted by [name withheld] on Monday July 8 2002, @6:47am [Delete] [Edit]

"See the scripts/mysql_install_db script to see
how it sets up the default privileges. You can use
this as a basis to see how to add other users."
You can also see how to add a user here:
http://www.mysql.com/doc/A/d/Adding_users.html

Posted by Chris on Wednesday February 27 2002, @6:49am [Delete] [Edit]

Beware, when recreating the default security
settings by running mysql_install_db, check the
owner of the newly created files to make sure
that they are owned by the mysql user otherwise
you won't be able to restart the mysql service.

Posted by on Wednesday March 13 2002, @7:29pm [Delete] [Edit]

mysql_setpermission.pl won't recreate user
settings on Win32.

Posted by [name withheld] on Wednesday December 18 2002, @5:27pm [Delete] [Edit]

Just to drop a note for beginners:
"mysqladmin -u root password
new_password"
this sets a new password for
root@LOCALHOST,
but not for the root@HOST.
By default the pass for root@HOST is blank so
just typing the command above is not sufficient.
For example your mysql server is completely open in
your local windows LAN....
so to correct the problem type:
"mysqladmin -u root -h my_host password
new_password"

Regards,
BIVOL
mail: bivolATinboxDOTru

Posted by Carey Black on Tuesday November 19 2002, @3:55pm [Delete] [Edit]

I would suggest the following for "inital db lockdown
commands":

//login as root and use the mysql db
mysql -uroot mysql

//then issue these
UPDATE user SET Password=PASSWORD
('root_passwd') where user='root';
UPDATE user SET Password=PASSWORD
('guest_passwd') where user='';
FLUSH PRIVILEGES;

That should change the passwords for the users root
and for the "anonymous" users for all listed hosts.

I find it a bit of an odd construct that a user can
have a password that is host dependent. (If MySql
supported RSA key based authenticaiton then that
would make some sense, but I have yet to see that
in the documentation.) [I guess this "current
feature" has some value to someone.]

Add your own comment.

Top / / / Up / Table of Contents