Шрифт:
Интервал:
Закладка:
17.1. Установка MySQL
Прежде всего нужно установить пакеты, необходимые для работы MySQL. У меня MySQL версии 4.0.15, поэтому я установил такие пакеты (номера версий у вас, возможно, будут другими, и я их обозначил символами «x»):
♦ MySQL_GPL-4.x.x
♦ MySQL_GPL-client-4.x.x
♦ MySQL_GPL-shared-libs-4.x
♦ MySQL_GPL-bench-4.x.x
♦ MySQL_GPL-resolveip-4.x.x
После установки пакетов нужно создать системную базу данных mysql, содержащую таблицы db, host и user. Скорее всего, она уже создана, но, чтобы окончательно убедиться в этом, введите команду:
# mysql_install_db
17.1.1. Назначение пароля суперпользователя
Учетные записи и пароли всех пользователей, которые имеют право работать с сервером, содержатся в таблице user. Сразу же после создания базы mysql в эту таблицу внесен только один пользователь — root. По умолчанию он не имеет пароля. Этот пароль нужно установить немедленно: не нужно объяснять, как это важно для безопасности системы. Для изменения пароля запустите сервер командой:
# safe_mysqld &
Эта команда запустит сервер в режиме демона и освободит консоль. Если все пакеты были установлены правильно, вы увидите сообщение:
mysql: ready for connections
Затем введите команду:
$ mysql -u root mysql
Эта команда запускает клиент MySQL (MySQL-монитор) и соединяется с сервером от имени пользователя root, даже если вы работаете под другой учетной записью. Последний аргумент указывает базу данных, которую требуется открыть.
SQL-запросы можно набирать в строке приглашения MySQL-монитора, заканчивая ввод точкой с запятой или командой g (go), а можно редактировать в текстовом редакторе, введя команду е (edit). Список команд MySQL-монитора можно получить по команде h (help).
Измените пароль суперпользователя с помощью следующего запроса:
UPDATE user SET Password=PASSWORD('новый_пароль') WHERE
user='root';
Как вы заметили, это обычный SQL-запрос, обновляющий поле Password таблицы user для пользователя root. При вводе запроса обратите внимание на регистр названий полей: сервер MySQL различает прописные и строчные буквы!
Теперь нужно, чтобы MySQL принял изменения. Для этого выполните еще один запрос SQL:
FLUSH PRIVILEGES;
Завершите сеанс работы с MySQL-монитором, введя команду q (quit). В следующий раз зарегистрироваться на сервере без пароля вы уже не сможете. Теперь нужно запускать MySQL-монитор следующей командой:
$ mysql -u root -p mysql
Ключ -p запросит при регистрации пароль. Имейте в виду: забытый пароль нельзя восстановить. Единственный выход из этого положения — удалить каталог /var/lib/mysql/mysql и создать базу mysql заново командой mysql_install_db.
Для принятия изменений можно также использовать программу mysqladmin с аргументом reload. Вызвать программу можно так:
$ mysqladmin -p reload
Параметр -p вам обязательно нужно использовать, так как вы только что установили пароль для пользователя root.
Установите права доступа к сценарию /etc/rc.d/init.d/mysqld:
# chmod +x /etc/rc.d/init.d/mysqld
Теперь можете перезапустить сервер командой
# /etc/rc.d/init.d/mysqld restart
17.1.2. Автозапуск сервера MySQL
Последнее, что вам осталось сделать — это добавить сервер MySQL в автозапуск. С этой целью перейдите в каталог /etc/rc.d/rc3.d и создайте символическую ссылку на файл /etc/rc.d/init.d/mysql:
# ln -s S14mysql /etc/rc.d/init.d/mysql
Префикс S14 определяет очередность запуска сервера mysqld. В данном случае он запустится после сервисов network (S10) и portmap (S11). У вас эти значения могут быть другими.
17.1.3. Пользователи сервера MySQL и их права
После установки сервера нужно завести пользователей, которые имеют право работать с сервером баз данных. Введите следующий запрос:
GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY
'пароль' WITH GRANT OPTION;
Введенный вами запрос создаст пользователя admin, который будет иметь право выполнять любые операции со всеми базами данных. Этот пользователь будет иметь право подключаться к серверу с компьютера localhost, используя пароль.
Маска *.* определяет, к каким базам данных и таблицам имеет право подключаться тот или иной пользователь. Первая звездочка определяет базу, а вторая — таблицу. Если вам нужно, чтобы пользователь admin имел право подключаться с любого узла, используйте знак процента вместо имени компьютера:
GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY
'пароль' WITH GRANT OPTION;
Вместо всех полномочий вы можете определить, какие действия может выполнять с базой тот или иной пользователь. Если вы являетесь хостинг-провайдером и предоставляете доступ пользователю к его базе данных, то вы можете использовать следующий запрос:
GRANT CREATE,DROP,SELECT,INSERT,UPDATE,DELETE,INDEX ON
user.* TO [email protected]% IDENTIFIED BY 'пароль';
Этот запрос позволяет пользователю user выполнять все операции с его базой данных.
Полный список полномочий представлен в таблице 17.1.
Полномочия пользователей сервера MySQL Таблица 17.1
Полномочия Описание SELECT, INSERT, UPDATE, DELETE Право просматривать, добавлять, модифицировать, удалять данные в таблицах базы данных INDEX Право производить операции с индексами таблиц REFERENCES Право работать со ссылками в базах данных и таблицах CREATE, DROP Право создавать и удалять таблицы и базы данных GRANT, ALTER Право определять полномочия RELOAD, SHUTDOWN, PROCESS Право перезагружать, останавливать сервер и просматривать все процессы (подключения)Если запрос GRANT у вас не работает, то вы можете внести пользователя непосредственно в таблицу user базы данных mysql. Структура таблицы user выглядит следующим образом:
Host User Password Select_priv Insert_priv Update_priv
Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv
Process_priv File_priv
Поля Host, User, Password — это, соответственно, узел, из которого пользователь может получить доступ, имя и пароль пользователя. Все остальные поля задают полномочия. Если выполнение какой-нибудь операции разрешено пользователю, значение поля должно быть равным «Y», в противном случае — «N».
Например, нам нужно создать пользователя admin, который должен иметь все полномочия. Это можно сделать с помощью такого запроса SQL:
INSERT INTO user(Host,User,Password,Select_priv,Insert_priv,
Update_priv, Delete_priv, Create_priv, Drop_priv,
Reload_priv, Shutdown_priv, Process_priv, File_priv)
VALUES ('localhost', 'admin', password('4td561s12'),
'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
Для создания обыкновенного пользователя используйте следующий запрос:
INSERT INTO user(Host, User, Password, Select_priv,
Insert_priv, Update_priv, Delete_priv) VALUES('%',
'user', password('123456') , 'Y' , 'Y' , 'Y' , ' Y');
17.2. Клиентская часть MySQL
Удобной программой для просмотра структуры базы данных является mysqlshow. Введите следующую команду:
$ mysqlshow -p mysql
В ответ вы увидите список таблиц, которые находятся в базе данных mysql.
Программа mysqlshow может вызываться с дополнительными ключами, перечисленными в таблице 17.2.
Ключи программы mysqlshow Таблица 17.2
Ключ Назначение --host=имя_узла Задает имя узла, где работает сервер MySQL, к которому вы хотите подключиться --port=номер_порта Определяет номер порта для сервера MySQL --socket=сокет Указывает сокет --user=имя_пользователя Указывает, под каким именем зарегистрироваться на сервере MySQL -p Запрашивает ввод пароляДля самих же операций с данными используется программа mysql. Она понимает те же ключи, что и mysqlshow, и много других, среди которых очень полезный ключ -s. Я рекомендую вам всегда его использовать. Этот ключ подавляет большинство ненужных сообщений, выводимых MySQL-клиентом, что существенно повышает производительность на медленных линиях связи.
17.3. Установка PHP и настройка связки Apache+PHP+MySQL
- Операционная система UNIX - Андрей Робачевский - Программное обеспечение
- Разработка приложений в среде Linux. Второе издание - Майкл Джонсон - Программное обеспечение
- Искусство программирования для Unix - Эрик Реймонд - Программное обеспечение
- Linux - Алексей Стахнов - Программное обеспечение
- Fedora 8 Руководство пользователя - Денис Колисниченко - Программное обеспечение
- Недокументированные и малоизвестные возможности Windows XP - Роман Клименко - Программное обеспечение
- Изучаем Windows Vista. Начали! - Дмитрий Донцов - Программное обеспечение
- Windows Vista - Виталий Леонтьев - Программное обеспечение
- Архитектура операционной системы UNIX - Морис Бах - Программное обеспечение
- Windows Vista. Трюки и эффекты - Юрий Зозуля - Программное обеспечение