Литмир - Электронная Библиотека
Содержание  
A
A

$ <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&gt; <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&gt;<b> use mysql</b>

mysql&gt; <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&gt;

Отметьте, что вы создали пароль для пользователя root, только когда подключились с компьютера

localhost
. MySQL может хранить права доступа не только для пользователей, но и для классов соединений (connection classes), основанных на имени узла. Следующим шагом в защите вашей установки будет удаление ненужных пользователей, устанавливаемых MySQL по умолчанию. Приведенная далее команда удаляет из таблицы прав доступа всех пользователей с именами, отличающимися от root.

mysql&gt; <b>DELETE FROM user WHEREuser != 'root';</b>

Query OK, 2 rows affected (0.01 sec)

Следующая команда удаляет все регистрации с машин, отличных от компьютера

localhost
.

mysql&gt; <b>DELETE FROM user WHEREhost != 'localhost';</b>

Query OK, 1 row affected (0.01 sec)

И последнее, примените следующую команду для того, чтобы убедиться в отсутствии случайных регистраций:

mysql&gt; <b>SELECT user, host, password FROM user;</b>

+------+-----------+------------------+

| user | host      | password         |

+------+-----------+------------------+

| root | localhost | 2dxf8e9c23age6ed |

+------+-----------+------------------+

1 row in set (0.00 sec) mysql&gt; <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&gt;

Теперь у вас есть работающая версия 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
— немного странная синтаксическая запись для задания начального пароля. Обратите внимание на способ применения кавычек; важно применять символы одинарных кавычек точно так, как показано, иначе вы не сможете создать пользователей, как намечали.

138
{"b":"285844","o":1}