Початкове налаштування MySQL, MySQL, Статті, Програмування - Програмування C, Delphi, C#
Початкове налаштування MySQL
Після того, як ви поставили серверну та клієнтську частини пакету MySQL, наступним кроком буде змусити все це працювати. Демон бази даних запускається командою mysqld. За допомогою ключа можна переглянути всі доступні опції. Також цей ключ дозволить подивитися список директорій, з якими працює MySQL.
Для функціонування пакета треба створити головну системну базу даних на ім'яmysql. Всі бази створюються в окремо виділеній папці, яку можна обчислити за допомогою . Знайдіть після довгого списку можливих ключів рядки, що явно вказують на різні директорії.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 до автозапуску.