$ <b>mysql -u root</b>
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Type 'help;' or '\h' for help. Type ' \c' to clear the buffer.
mysql> <b>SET password=PASSWORD('secretpassword');</b>
Query OK, 0 rows affected (0.00 sec)
Конечно же, выберите пароль, известный только вам, а не пример "secretpassword", использованный нами в данном случае для того, чтобы показать, куда вводить ваш собственный пароль. Если вы когда-нибудь захотите удалить пароль, можно просто задать пустую строку на месте "secretpassword", и пароль будет удален.
Примечание
Обратите внимание на то, что мы завершаем команды на языке SQL точкой с запятой (
;
). Строго говоря; она не является частью команды SQL, а применяется для того, чтобы сообщить программе-клиенту MySQL о том, что наша команда SQL готова к выполнению. Мы также пользуемся прописными буквами для ввода ключевых слов языка SQL, например,
SET
. Это не обязательно, потому что действительный синтаксис MySQL допускает ввод ключевых слов как прописными, так и строчными буквами, но мы применяем первый вариант как принятое соглашение в данной книге и в нашей повседневной работе, т.к. считаем, что это облегчает чтение команд SQL.
Теперь рассмотрим таблицу прав доступа, чтобы убедиться в том, что пароль установлен. Сначала с помощью команды use переключитесь на базу данных mysql и затем запросите внутренние таблицы:
mysql><b> use mysql</b>
mysql> <b>SELECT user, host, password FROM user;</b>
+------+-----------+------------------+
| user | host | password |
+------+-----------+------------------+
| root | localhost | 2dxf8e9c23age6ed |
| root | fc7blp4e | |
| | localhost | |
| | fc7blp4e | |
+------+-----------+------------------+
4 rows in set (0.01 sec) mysql>
Отметьте, что вы создали пароль для пользователя root, только когда подключились с компьютера
localhost
. MySQL может хранить права доступа не только для пользователей, но и для классов соединений (connection classes), основанных на имени узла. Следующим шагом в защите вашей установки будет удаление ненужных пользователей, устанавливаемых MySQL по умолчанию. Приведенная далее команда удаляет из таблицы прав доступа всех пользователей с именами, отличающимися от root.
mysql> <b>DELETE FROM user WHEREuser != 'root';</b>
Query OK, 2 rows affected (0.01 sec)
Следующая команда удаляет все регистрации с машин, отличных от компьютера
localhost
.
mysql> <b>DELETE FROM user WHEREhost != 'localhost';</b>
Query OK, 1 row affected (0.01 sec)
И последнее, примените следующую команду для того, чтобы убедиться в отсутствии случайных регистраций:
mysql> <b>SELECT user, host, password FROM user;</b>
+------+-----------+------------------+
| user | host | password |
+------+-----------+------------------+
| root | localhost | 2dxf8e9c23age6ed |
+------+-----------+------------------+
1 row in set (0.00 sec) mysql> <b>exit</b>
Как видно из предыдущего вывода, теперь у вас есть только один зарегистрированный пользователь, который может подключаться только с машины localhost.
Внимание! Момент истины: можете ли вы в дальнейшем регистрироваться с паролем, который установили? На сей раз вы задаете параметр
-p
, который сообщает MySQL о необходимости вывести подсказку для ввода пароля:
$ <b>mysql -u root -p</b>
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
Теперь у вас есть работающая версия MySQL, заблокированная так, что только пользователь root с паролем, установленным вами, может подключиться к серверу базы данных и только с локальной машины. Подключиться к MySQL и ввести пароль вы можете из командной строки. Делается это с помощью параметра,
--password
, например,
--password=secretpassword
или
-psecretpassword
, но ясно, что это небезопасно, потому что пароль можно увидеть с помощью команды
ps
или просмотра хронологии команды. Однако ввод пароля в командной строке иногда просто необходим, например, если вы пишете сценарии, которым нужно подключаться к базе данных MySQL.
Следующий шаг — добавление пользователя или пользователей, которые нужны. В случае системы Linux, не следует без крайней необходимости использовать учетную запись root для регистрации в базе данных MySQL, лучше создать обычного пользователя для каждодневного применения.
Как мы отмечали ранее, вы можете создать пользователей с различными правами подключения с разных машин; в примере пользователю root из соображений безопасности разрешено подключаться только с локальной машины. В данной главе создадим нового пользователя широкими правами доступа. Rick сможет подключаться тремя разными способами:
□ он сможет подключаться с локальной машины;
□ он сможет подключаться с любой машины, IP-адрес которой находится в диапазоне от 192.168.0.0 до 192.168.0.255;
□ он сможет подключаться с любой машины, входящей в домен wiley.com.
Самый легкий способ сделать это безопасно — создать трех разных пользователей с тремя разными зонами подключения. У этих пользователей по вашему желанию даже могут быть разные пароли, зависящие от того, с какого адреса они устанавливают соединение.
Создать пользователей и присвоить им полномочия можно с помощью команды
grant:
. Создадим пользователя с тремя только что перечисленными зонами, подключения. Ключевое слово
IDENTIFIED BY
— немного странная синтаксическая запись для задания начального пароля. Обратите внимание на способ применения кавычек; важно применять символы одинарных кавычек точно так, как показано, иначе вы не сможете создать пользователей, как намечали.