Первісна настройка mysql

Після того, як ви поставили серверну і клієнтську частини пакета MySQL, наступним кроком буде змусити все це працювати. Демон бази даних запускається командою mysqld. За допомогою ключа [--help] можна подивитися всі доступні опції. Так само цей ключ дозволить подивитися список директорій, з якими працює MySQL.

Для функціонування пакета, треба створити головну системну базу даних по імені mysql. Всі бази створюються в окремо виділеній теці, яку якраз можна обчислити за допомогою mysqld --help. Знайдіть після довгого списку можливих ключів рядки, явно вказують на різні директорії.
basedir. говорить сама за себе - це базова директорія, щодо якої можуть бути задані інші.
datadir. ось в ній щось і будуть зберігатися всі бази даних.

Якщо ви встановлювали MySQl за допомогою RPM-пакетів або ще якимось автоматизованим способом, можливо в цій директорії вже існує системна база даних. Якщо ж ви компілювали пакет або переписували виконувані файли вручну, то можливо її не існує або вона порожня. В цьому випадку базу mysql треба створити за допомогою скрипта mysql_install_db. Якщо не буде ніяких помилок, то після закінчення роботи скрипта, він попросить вас задати пароль для користувача root. Що це означає?

Бази даних в MySQL, як і в багатьох інших системах доступні кількох користувачів, які можуть підключатися до сервера MySQL як з локального комп'ютера, за допомогою серверних мов і CGI, так і по TCP / IP через клієнтів 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> = 3.22:

mysql> SET PASSWORD FOR root = PASSWORD ( 'new_password');

або взагалі з shell'а за допомогою програми mysqladmin:

shell> mysqladmin -u root password new_password


Все, тепер root не зможе просто так увійти в програму mysql. пишемо

і переконуємося в цьому:

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 і повторити все по новій.

Якщо вам цікава структура системної бази даних ви можете будувати досліджувати її за допомогою SQL-запитів з програми mysql, а так само за допомогою внутрішніх команд і утиліти mysqlshow. наприклад

покаже список всіх таблиць в базі даних some_database, а запит

mysql> SELECT * FROM some_table;

видасть вміст some_table в табличному вигляді.

ok. Тепер добре б додати користувачів бази даних, разом з їх правами та паролями.

Використовуємо вираз 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'а і вказуючи свій пароль.

Ось всі можливі опції для привілеїв:

Вибирайте самі яких користувачів створювати. Для розрахованого на багато користувачів сервера можна порадити робити користувачів, здатних тільки змінювати дані однієї бази даних. Якщо всім сервером завідує один вебмастер, цілком можна надати йому більш широку свободу дій.

Відмінно! Тепер мінімум того, що може знадобиться від сервера MySQL налаштоване і можна починати створювати таблиці і вносити дані.

І не забудьте додати mysqld в автозапуск.