1. Подготовка mysql к работе
После создания, в системной базе будут описаны в том числе
привелегии для разных пользователей. Самый главный из них конечно же
пользователь root,
который имеет полный доступ ко всем базам. Для него надо задать пароль, так как
по умолчанию его нет.
shell> mysql -u root mysql
Означает запуск главного MySQL-клиента по имени mysql от имени пользователя root (-u root) и выбор базы данных mysql Далее откроется
консолька программы mysql.
Делаем самый обычный
SQL-запрос:
mysql>UPDATE user SET
Password=PASSWORD('new_password') WHERE user='root';
Это обновит поля Password для таблицы user, в которой поля user='root'. Другими словами для пользователя root будет установлен пароль new_password закриптованный по методу PASSWORD().
Заставляем MySQL принять изменения:
mysql>FLUSH PRIVILEGES;
Есть еще один способ, работающий
на версиях MySQL >=
3.22:
mysql>SET PASSWORD FOR
root=PASSWORD('new_password');
или вообще из shell'а с помощью программы mysqladmin:
shell>mysqladmin -u root password
new_password
Все, теперь root не сможет просто так войти в
программу mysql. Пишем
mysql>exit
и убеждаемся в этом:
shell>mysql -u root
ERROR 1045: Access denied for user:
'root@localhost' (Using password: NO)
Заходить с паролем надо так:
shell>mysql -u root -p
Enter password: *******
Вот и все. Пароль для root'а совсем не обязательно
должен быть таким же как его пароль в системе.
Если пароль был случайно забыт,
чтобы его задать по новой, придется стереть файлы mysql.frm mysql.MYI
и mysql.MYD из папки с базами данных,
затем запустить скрипт mysql_install_db и повторить все по новой.
/********************/
Используем выражение GRANT. Можно опять вносить
прямые поправки в таблицы mysql,
но это будет слишком длинно. Итак:
mysql>GRANT ALL PRIVILEGES ON
*.* TO admin@localhost IDENTIFIED BY 'some_password' WITH GRANT OPTION;
Это создаст пользователя admin, который сможет делать
все что захочет со всеми базами данных и вообще mysql-ем, подключаясь только с localhost и указывая пароль some_password. Чтобы admin мог подключаться с других хостов,
надо добавить строчку
mysql>GRANT ALL PRIVILEGES
ON *.* TO admin@"%" IDENTIFIED BY ' some_password'
WITH GRANT OPTION;
Кстати *.* означает к каким базам
данных и таблицам имеет доступ admin.
Обозначения делаются следующим образом "база.таблица"
Для создания более-менее
продвинутого пользователя можно использовать такое выражение:
mysql>GRANT
SELECT,INSERT,UPDATE,DELETE,INDEX, CREATE,DROP ON *.* TO poweruser@localhost IDENTIFIED
BY 'user_password';
Такой пользователь сможет
использовать все основные SQL-команды
для данных в таблицах, а так же создавать и удалять базы данных. Однако он не
сможет выключать, перезапускать демон MySQL, смотреть на список процессов, не будет иметь доступ к
файлам сервера, а так же сможет подключаться к базе данных только с localhost'а и указывая свой
пароль.
Вот все возможные опции для
привелегий:
SELECT,INSERT,UPDATE,DELETE - одноименные sql-команды операций с данными
INDEX - операции с
индексами в таблицах
REFERENCES - работа со ссылками
в базах данных и таблицах
CREATE, DROP - создание и удаление баз данных и таблиц
GRANT, ALTER - совершение операций с привелегиями
RELOAD, SHUTDOWN, PROCESS -
управление сервером mysql.
Перезапустить, убить и посмотреть все подключения соответственно. Точнее это
дает право на выполнение команд программы mysqladmin, направленных на исполнение указанных целей
FILE - позволяет загонять
в базу данных любой читабельный файл с сервера
/******************************/
http://www.linuxcenter.ru/lib/articles/soft/mysql.phtml |