mysql_user — Добавление или удаление пользователя из базы данных MySQL.
Описание
- Добавляет или удаляет пользователя из базы данных MySQL.
Требования
Ниже перечислены требования к хосту, на котором будет выполняться этот модуль.
- PyMySQL (Python 2.7 и Python 3.X), или
- MySQLdb (Python 2.x)
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| append_privs (добавлен в 1.4) |
| Добавить привилегии, определенные в priv, к существующим для этого пользователя, вместо перезаписи существующих. |
| check_implicit_admin (добавлен в 1.3) |
| Проверить, позволяет ли MySQL вход как root/без пароля, прежде чем использовать предоставленные учетные данные. |
| config_file (добавлен в 2.0) | Значение по умолчанию: ~/.my.cnf | Указать файл конфигурации, из которого нужно считать имя пользователя и пароль. |
| connect_timeout (добавлен в 2.1) | Значение по умолчанию: 30 | Таймаут подключения к серверу MySQL. |
| encrypted (добавлен в 2.0) |
| Указать, что поле 'password' — это хэш `mysql_native_password` |
| host | Значение по умолчанию: localhost | часть имени пользователя MySQL |
| host_all (добавлен в 2.1) |
| переопределяет параметр host, заставляя Ansible применять изменения ко всем именам хостов для данного пользователя. Этот параметр нельзя использовать при создании пользователей |
| login_host | Значение по умолчанию: localhost | Хост, на котором работает база данных. |
| login_password | Значение по умолчанию: None | Пароль для аутентификации. |
| login_port | Значение по умолчанию: 3306 | Порт сервера MySQL. Требуется, если login_host задан иначе, чем localhost. |
| login_unix_socket | Значение по умолчанию: None | Путь к сокету Unix доменного имени для локальных подключений. |
| login_user | Значение по умолчанию: None | Имя пользователя для аутентификации. |
| name обязательно | Имя пользователя (роли) для добавления или удаления | |
| password | Значение по умолчанию: None | Установить пароль пользователя. |
| priv | Значение по умолчанию: None | Строка привилегий MySQL в формате: db.table:priv1,priv2. Несколько привилегий можно указать, разделяя их с помощью слеша: db.table:priv/db.table:priv. Формат основан на инструкции MySQL GRANT. Имена баз данных и таблиц могут быть заключены в кавычки по стилю MySQL. Если используются привилегии к столбцам, то часть priv1,priv2 должна быть точно такой же, как возвращается инструкцией SHOW GRANT. В противном случае модуль всегда будет сообщать о изменениях. Он включает группировку столбцов по разрешениям (SELECT(col1,col2) вместо SELECT(col1,SELECT(col2))). |
| sql_log_bin (добавлен в 2.1) |
| Включить или отключить бинарное протоколирование для подключения. |
| ssl_ca (добавлен в 2.0) | Значение по умолчанию: None | Путь к сертификату Центра сертификации (CA). Если используется, этот параметр должен указывать тот же сертификат, что и сервер. |
| ssl_cert (добавлен в 2.0) | Значение по умолчанию: None | Путь к сертификату открытого ключа клиента. |
| ssl_key (добавлен в 2.0) | Значение по умолчанию: None | Путь к закрытому ключу клиента. |
| state |
| Существует ли пользователь. Если значение absent, удаляет пользователя. |
| update_password (добавлен в 2.0) |
| always будет обновлять пароли, если они отличаются. on_create будет устанавливать пароль только для вновь созданных пользователей. |
Примечания
Примечание
- Сервер MySQL устанавливается с именем пользователя ‘root’ по умолчанию и без пароля. Чтобы защитить этого пользователя в рамках идемпотентного плейбука, необходимо создать как минимум две задачи: первая должна сменить пароль пользователя root, не предоставляя никаких данных login_user/login_password. Вторая задача должна удалить файл ~/.my.cnf, содержащий новые данные учетных данных root. Последующие запуски плейбука будут успешны, считывая новые учетные данные из файла.
- В настоящее время поддерживается только хэш пароля
mysql_native_password. - Требуется пакет PyMySQL (Python 2.7 и Python 3.X) или MySQL-python (Python 2.X) на удаленном хосте. Для Ubuntu это делается с помощью apt-get install python-pymysql. (См. apt). Для CentOS/Fedora это делается с помощью yum install python2-PyMySQL. (См. yum.)
- И
login_passwordиlogin_userнеобходимы при передаче учетных данных. Если ни один из них не указан, модуль попытается считать учетные данные из~/.my.cnf, а затем вернется к использованию стандартного входа MySQL — ‘root’ без пароля.
Примеры
# Removes anonymous user account for localhost
- mysql_user:
name: ''
host: localhost
state: absent
# Removes all anonymous user accounts
- mysql_user:
name: ''
host_all: yes
state: absent
# Create database user with name 'bob' and password '12345' with all database privileges
- mysql_user:
name: bob
password: 12345
priv: '*.*:ALL'
state: present
# Create database user with name 'bob' and previously hashed mysql native password '*EE0D72C1085C46C5278932678FBE2C6A782821B4' with all database privileges
- mysql_user:
name: bob
password: '*EE0D72C1085C46C5278932678FBE2C6A782821B4'
encrypted: yes
priv: '*.*:ALL'
state: present
# Creates database user 'bob' and password '12345' with all database privileges and 'WITH GRANT OPTION'
- mysql_user:
name: bob
password: 12345
priv: '*.*:ALL,GRANT'
state: present
# Modify user Bob to require SSL connections. Note that REQUIRESSL is a special privilege that should only apply to *.* by itself.
- mysql_user:
name: bob
append_privs: true
priv: '*.*:REQUIRESSL'
state: present
# Ensure no user named 'sally'@'localhost' exists, also passing in the auth credentials.
- mysql_user:
login_user: root
login_password: 123456
name: sally
state: absent
# Ensure no user named 'sally' exists at all
- mysql_user:
name: sally
host_all: yes
state: absent
# Specify grants composed of more than one word
- mysql_user:
name: replication
password: 12345
priv: "*.*:REPLICATION CLIENT"
state: present
# Revoke all privileges for user 'bob' and password '12345'
- mysql_user:
name: bob
password: 12345
priv: "*.*:USAGE"
state: present
# Example privileges string format
# mydb.*:INSERT,UPDATE/anotherdb.*:SELECT/yetanotherdb.*:ALL
# Example using login_unix_socket to connect to server
- mysql_user:
name: root
password: abc123
login_unix_socket: /var/run/mysqld/mysqld.sock
# Example of skipping binary logging while adding user 'bob'
- mysql_user:
name: bob
password: 12345
priv: "*.*:USAGE"
state: present
sql_log_bin: no
# Example .my.cnf file for setting the root password
# [client]
# user=root
# password=n<_665{vS43y
Статус
Этот модуль помечен как preview, что означает, что его интерфейс не гарантируется как обратной совместимости.
Автор
- Jonathan Mainguy (@Jmainguy)
Подсказка
Если вы заметите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.5/modules/mysql_user_module.html