Основы MySQL (21) Управление пользователями и разрешениями

1. Управление пользователями

1.1 Войдите на сервер MySQL

После запуска службы MySQL вы можете войти на сервер MySQL с помощью команды mysql.Команда выглядит следующим образом:

mysql –h hostname|hostIP –P port –u username –p DatabaseName –e "SQL语句"
  • -h参数За ним следует имя хоста или IP-адрес хоста, имя хоста — это хост, а HostIP — IP-адрес хоста.
  • -P参数Затем укажите порт службы MySQL и подключитесь к указанному порту через этот параметр. Порт службы MySQL по умолчанию — 3306. Если этот параметр не используется, он автоматически подключается к порту 3306, а порт — это номер порта соединения.
  • -u参数За именем пользователя следует имя пользователя.
  • -p参数Вам будет предложено ввести пароль.
  • DatabaseName参数Укажите, в какую базу данных войти. Без этого параметра вы войдете непосредственно в базу данных MySQL, а затем сможете использовать команду USE для выбора базы данных.
  • -e参数Вы можете добавить операторы SQL позже. После входа на сервер MySQL вы можете выполнить этот оператор SQL, а затем выйти из сервера MySQL.
mysql -uroot -p -hlocalhost -P3306 mysql -e "select host,user from user"
1.2Создать пользователя
CREATE USER 用户名 [IDENTIFIED BY '密码'][,用户名 [IDENTIFIED BY '密码']];

Пример:

CREATE USER zhang3 IDENTIFIED BY '123123'; # 默认host是 %
CREATE USER 'kangshifu'@'localhost' IDENTIFIED BY '123456';
1.3 Изменить пользователя
UPDATE mysql.user SET USER='li4' WHERE USER='wang5'; 
FLUSH PRIVILEGES;
1.4 Удаление пользователей

Способ 1: используйте DROP для удаления (рекомендуется)

DROP USER user[,user];

Пример:

DROP USER li4 ; # 默认删除host为%的用户
DROP USER 'kangshifu'@'localhost';

Способ 2. Используйте метод DELETE для удаления (не рекомендуется, имеется остаточная информация).

DELETE FROM mysql.user WHERE Host=’hostname’ AND User=’username’;
FLUSH PRIVILEGES;
1.5Установите текущий пароль пользователя

1. Используйте команду ALTER USER, чтобы изменить текущий пароль пользователя.

ALTER USER USER() IDENTIFIED BY 'new_password';

2. Используйте оператор SET, чтобы изменить текущий пароль пользователя.

SET PASSWORD='new_password';
1.6 Изменение паролей других пользователей

1. Используйте оператор ALTER, чтобы изменить пароль обычного пользователя.

ALTER USER user [IDENTIFIED BY '新密码'] 
[,user[IDENTIFIED BY '新密码']];

2. Используйте команду SET для изменения пароля обычного пользователя.

SET PASSWORD FOR 'username'@'hostname'='new_password';

2. Управление разрешениями

2.1 Список разрешений
show privileges;
  • CREATE和DROP权限, вы можете создавать новые базы данных и таблицы или удалять (удалять) существующие базы данных и таблицы. Если пользователю предоставлено разрешение DROP в базе данных MySQL, он может удалить базу данных, сохраненную с помощью разрешения доступа MySQL.
  • SELECT、INSERT、UPDATE和DELETE权限Позволяет выполнять операции с существующими таблицами в базе данных.
  • SELECT权限Они используются только тогда, когда фактически извлекают строки из таблицы.
  • INDEX权限Позволяет создавать или удалять индексы, ИНДЕКС применяется к существующим таблицам. Если у вас есть разрешение CREATE для таблицы, вы можете включить определения индекса в оператор CREATE TABLE.
  • ALTER权限Вы можете использовать ALTER TABLE, чтобы изменить структуру таблицы и переименовать ее.
  • CREATE ROUTINE权限Используется для создания сохраненных программ (функций и процедур), ALTER ROUTINE权限используется для изменения и удаления сохраненных программ и EXECUTE权限используется для выполнения сохраненных программ.
  • GRANT权限Разрешает авторизацию другим пользователям для баз данных, таблиц и сохраненных программ.
  • FILE权限Позволяет пользователям использовать операторы LOAD DATA INFILE и SELECT... INTO OUTFILE для чтения или записи файлов на сервере. Любой пользователь, которому предоставлены разрешения FILE, может читать или записывать любой файл на сервере MySQL (что указывает на то, что пользователи могут читать файлы в любой базе данных). каталог), поскольку сервер может получить доступ к этим файлам).
2.2 Принципы предоставления разрешений

Контроль разрешений в основном осуществляется из соображений безопасности, поэтому необходимо соблюдать следующее 经验原则:

1. Предоставляйте возможности только 满足需要的最小权限для предотвращения плохих поступков пользователей. Например, если пользователю нужно только выполнить запрос, дайте ему только разрешение на выбор. Не давайте пользователю разрешения на обновление, вставку или удаление.

2. При создании пользователя 限制用户的登录主机он обычно ограничивается указанным IP-адресом или IP-сегментом интрасети.

3. Для каждого пользователя 设置满足密码复杂度的密码.

4. 定期清理不需要的用户Восстановите разрешения или удалите пользователей.

2.3 Предоставление разрешений
GRANT 权限1,权限2,…权限n ON 数据库名称.表名称 TO 用户名@用户地址 [IDENTIFIED BY ‘密码口令’];
  • Если этот орган обнаружит, что пользователь не существует, новый пользователь будет создан напрямую.
  • Используйте локальную командную строку для пользователя li4, чтобы предоставить atguigudb разрешение на вставку, удаление, изменение и запрос всех таблиц в библиотеке.
GRANT SELECT,INSERT,DELETE,UPDATE ON atguigudb.* TO li4@localhost;
  • Предоставьте пользователю joe, который входит в систему через сеть, полные права доступа ко всем таблицам во всех библиотеках и установите пароль 123. Обратите внимание, что сюда не входят разрешения на предоставление разрешений.
GRANT ALL PRIVILEGES ON *.* TO joe@'%' IDENTIFIED BY '123';
2.4Просмотр разрешений
  • Просмотр текущих разрешений пользователя
SHOW GRANTS; 
# 或 
SHOW GRANTS FOR CURRENT_USER; 
# 或 
SHOW GRANTS FOR CURRENT_USER();
  • Просмотр глобальных разрешений пользователя
SHOW GRANTS FOR 'user'@'主机地址';
2.5 Отозвать разрешение

Примечание. Перед удалением учетной записи пользователя из таблицы пользователей необходимо отозвать все разрешения соответствующего пользователя.

  • команда отзыва разрешения
REVOKE 权限1,权限2,…权限n ON 数据库名称.表名称 FROM 用户名@用户地址;
  • Пример
#收回全库全表的所有权限 
REVOKE ALL PRIVILEGES ON *.* FROM joe@'%'; 
#收回mysql库下的所有表的插删改查权限 
REVOKE SELECT,INSERT,UPDATE,DELETE ON mysql.* FROM joe@localhost;
  • Уведомление:须用户重新登录后才能生效

3. Управление ролями

3.1 Создайте роль
CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]...

Правила именования ролей аналогичны именам пользователей. Если host_name省略,默认为%, role_name不可省略, не может быть пустым.

3.2 Предоставление разрешений ролям
GRANT privileges ON table_name TO 'role_name'[@'host_name'];

В приведенном выше утверждении привилегии представляют собой имя разрешения, а несколько разрешений разделяются запятыми. Вы можете использовать оператор SHOW для запроса имени разрешения.

SHOW PRIVILEGES\G
3.3 Просмотр разрешений ролей
SHOW GRANTS FOR 'role_name';

Пока вы создаете роль, система автоматически предоставляет вам USAGEразрешение « », что означает 连接登录数据库的权限.

3.4 Восстановление разрешений роли
REVOKE privileges ON tablename FROM 'rolename';
3.5 Удалить роль
DROP ROLE role [,role2]...

Обратите внимание, 如果你删除了角色,那么用户也就失去了通过这个角色所获得的所有权限.

3.6 Назначение ролей пользователям

После создания и авторизации роли ее необходимо назначить пользователю, чтобы она 激活状态вступила в силу.

GRANT role [,role2,...] TO user [,user2,...];

Запросить текущие активированные роли

SELECT CURRENT_ROLE();
3.7 Активация ролей

Способ 1. Используйте команду set default role, чтобы активировать роль.

SET DEFAULT ROLE ALL TO 'kangshifu'@'localhost';

Способ 2. Установите для active_all_roles_on_login значение ON.

SET GLOBAL activate_all_roles_on_login=ON;

Этот оператор SQL означает, что да 所有角色永久激活.

3.8 Отзыв роли пользователя
REVOKE role FROM user;
3.9 Установка обязательной роли (обязательная роль)

Способ 1. Установите перед запуском службы.

[mysqld] 
mandatory_roles='role1,role2@localhost,r3@%.atguigu.com'

Способ 2: настройки времени выполнения

SET PERSIST mandatory_roles = 'role1,role2@localhost,r3@%.example.com'; #系统重启后仍然有效
SET GLOBAL mandatory_roles = 'role1,role2@localhost,r3@%.example.com'; #系统重启后失效

Supongo que te gusta

Origin blog.csdn.net/zhufei463738313/article/details/130579324
Recomendado
Clasificación