Первоначальная настройка MySQL
Добавлено: 08 дек 2010, 11:08
В этой небольшой статье я хотел лишь описать самые первые шаги, которые нужно делать после того, как вы скачали и установили пакет для работы с базами данных MySQL. Я совсем не собирался здесь описывать сам MySQL и не рассчитывал вдаваться во всякие технические подробности относительно безопасности. Если вы хотите подробной информации, Read The Fine Manual. Если вы хотите как можно быстрее начать делать базы данных, читайте это маленькое руководство.
После того, как вы поставили серверную и клиентскую части пакета MySQL, следующим шагом будет заставить все это работать. Демон базы данных запускается командой mysqld. При помощи ключа [--help] можно посмотреть все доступные опции. Так же этот ключ позволит посмотреть список директорий, с которыми работает MySQL.
Для функционирования пакета, надо создать главную системную базу данных по имени mysql. Все базы создаются в отдельно выделенной папке, которую как раз можно вычислить при помощи mysqld --help. Найдите после длинного списка возможных ключей строчки, явно указывающие на разные директории.
- basedir: говорит само за себя - это базовая директория, относительно которой могут быть заданы другие.
- datadir: вот в ней-то и будут храниться все базы данных.
Базы данных в MySQL, как и во многих других системах доступны одновременно большому количеству пользователей, которые могут подключаться к серверу MySQL как с локального компьютера, посредством серверных языков и CGI, так и по TCP/IP через клиентов MySQL, находящихся на удаленных компьютерах. После создания, в системной базе будут описаны в том числе привелегии для разных пользователей. Самый главный из них конечно же пользователь root, который имеет полный доступ ко всем базам. Для него надо задать пароль, так как по умолчанию его нет.
Код: Выделить всё
# mysql -u root mysql
Код: Выделить всё
mysql>UPDATE user SET Password=PASSWORD('new_password') WHERE user='root';
Заставляем MySQL принять изменения:
Код: Выделить всё
mysql>FLUSH PRIVILEGES;
Код: Выделить всё
mysql>SET PASSWORD FOR root=PASSWORD('new_password');
Код: Выделить всё
#mysqladmin -u root password new_password
Все, теперь root не сможет просто так войти в программу mysql. Пишем
Код: Выделить всё
mysql>exit
Код: Выделить всё
#mysql -u root
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
Код: Выделить всё
shell>mysql -u root -p
Enter password:
Если пароль был случайно забыт, чтобы его задать по новой, придется стереть файлы mysql.frm mysql.MYI и mysql.MYD из папки с базами данных, затем запустить скрипт
Код: Выделить всё
mysql_install_db
Если вам интересна структура системной базы данных вы можете строить исследовать ее с помощью SQL-запросов из программы mysql, а так же с помощью внутренних команд и утилиты mysqlshow. Например
Код: Выделить всё
#mysqlshow some_database
Код: Выделить всё
mysql>SELECT * FROM some_table;
ok. Теперь хорошо бы добавить пользователей базы данных, вместе с их правами и паролями.
Используем выражение GRANT. Можно опять вносить прямые поправки в таблицы mysql, но это будет слишком длинно. Итак:
Код: Выделить всё
mysql>GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY 'some_password' WITH GRANT OPTION;
Код: Выделить всё
mysql>GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY ' some_password' WITH GRANT OPTION;
Для создания более-менее продвинутого пользователя можно использовать такое выражение:
Код: Выделить всё
mysql>GRANT SELECT,INSERT,UPDATE,DELETE,INDEX, CREATE,DROP ON *.* TO poweruser@localhost IDENTIFIED BY 'user_password';
Вот все возможные опции для привелегий:
- SELECT,INSERT,UPDATE,DELETE - одноименные sql-команды операций с данными
- INDEX - операции с индексами в таблицах
- REFERENCES - работа со ссылками в базах данных и таблицах
- CREATE, DROP - создание и удаление баз данных и таблиц
- GRANT, ALTER - совершение операций с привелегиями
- RELOAD, SHUTDOWN, PROCESS - управление сервером mysql. Перезапустить, убить и посмотреть все подключения соответственно. Точнее это дает право на выполнение команд программы mysqladmin, направленных на исполнение указанных целей
- FILE - позволяет загонять в базу данных любой читабельный файл с сервера
Отлично! Теперь минимум того, что может понадобится от сервера MySQL настроено и можно начинать создавать таблицы и вносить данные.
И не забудьте добавить mysqld в автозапуск.