Linux-сервер своими руками
Шрифт:
1. таблицу db;
2. таблицу host;
3. таблицу user.
Сейчас нас интересует таблица user. Она содержит пароли всех пользователей, которые имеют право работать с сервером. На данном (начальном) этапе в базу данных внесен только один пользователь — root. Для изменения пароля запустите сервер командой:
Эта команда запустит сервер в режиме демона и освободит консоль. Если все пакеты были установлены правильно, вы увидите сообщение:
Однако,
Данная команда запускает клиент MySQL. При этом используется имя пользователя root, даже если вы работаете под другой учетной записью. Последний параметр определяет базу данных — mysql.
Измените пароль суперпользователя с помощью команды:
Как вы заметили, это обычный SQL-запрос, обновляющий поле Password таблицы user для пользователя root. Теперь нужно, чтобы MySQL принял изменения. Для этого выполните еще один запрос SQL:
Для принятия изменений можно также использовать программу mysqladmin с параметром reload. Вызвать программу можно так:
Параметр –р вам обязательно нужно использовать, так как вы только что установили пароль для пользователя root. Выйти из клиента mysql вы можете, введя команду quit.
Установите права доступа к сценарию /etc/re.d/init.d/mysql:
Теперь можете перезапустить сервер командой:
Если вы забудете пароль, вы его уже не восстановите. Единственный выход из этого положения — удалить каталог /var/lib/mysql/mysql и создать базу mysql заново командой mysql_install_db.
Теперь вы уже не можете зарегистрироваться на сервере без пароля. Если вы введете команду mysql –u root mysql, то получите следующее сообщение:
Для регистрации на сервере теперь нужно использовать команду mysql –u root –p. Параметр –р запросит пароль при регистрации.
Последнее, что вам осталось сделать — это добавить сервер MySQL в автозапуск. С этой целью перейдите в каталог /etc/re.d/rc3.d/ и создайте символическую ссылку на файл /etc/re.d/init.d/mysql:
Префикс S14 определяет очередность запуска сервера mysql. В данном случае он запустится после сервисов network (S10) и portmap (S11). У вас эти значения могут быть другими.
В своей работе демон mysqld использует файл журнала /var/log/mysql.log. Именно в него заносятся все транзакции, а также все команды, которые ввел пользователь. После установки сервера нужно внести пользователей, которые имеют право работать с сервером баз данных. Введите следующий запрос:
Введенный
Маска *.* определяет, к каким базам данных и таблицам имеет право подключаться тот или иной пользователь. Первая звездочка определяет базу, а вторая — таблицу. Если вам нужно, чтобы пользователь admin имел право подключаться с любого хоста, используйте знак процента вместо имени хоста. В этом случае запрос будет выглядеть так:
Вместо всех полномочий вы можете определить, какие действия может выполнять с базой тот или иной пользователь. Если вы являетесь хостинг-провайдером и предоставляете доступ пользователю к его базе данных, то можете использовать следующий запрос:
Перед выполнением данного запроса необходимо создать базу данных user. Данный запрос позволяет пользователю user выполнять все операции с его базой данных.
Полный список полномочий представлен в табл. 16.1. Если запрос GRANT у вас не работает, то вы можете внести пользователя непосредственно в таблицу user базы данных mysql. Структура таблицы user выглядит следующим образом:
Поля Host, User, Password — это, соответственно, узел, из которого пользователь может получить доступ, имя пользователя, пароль пользователя.
Полномочия пользователей сервера MySQL Таблица 16.1
Полномочия | Описание |
---|---|
SELECT, INSERT, UPDATE, DELETE | Одноименные операции с данными: пользователь имеет право просматривать, добавлять, модифицировать, удалять данные в таблицах баз данных |
INDEX | Пользователь имеет право производить операции с индексами таблиц |
REFERENCES | Пользователь имеет право работать со ссылками в базах данных и таблицах |
CREATE, DROP | Создание и удаление таблиц и баз данных |
GRANT, ALTER | Операции с полномочиями |
RELOAD, SHUTDOWN, PROCESS | Пользователь имеет право перезагружать, останавливать сервер и просматривать все процессы (подключения) |