mysql_user - Добавляет или удаляет пользователя из базы данных MySQL.
Описание
- Добавляет или удаляет пользователя из базы данных MySQL.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- PyMySQL (Python 2.7 и Python 3.X), или
- MySQLdb (Python 2.x)
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| append_privs bool (добавлен в 1.4) |
| Добавить привилегии, определенные в priv, к существующим для этого пользователя, вместо перезаписи существующих. |
| check_implicit_admin bool (добавлен в 1.3) |
| Проверить, разрешает ли mysql вход как root/без пароля, прежде чем использовать предоставленные учетные данные. |
| config_file (добавлен в 2.0) | Значение по умолчанию: "~/.my.cnf" | Указать конфигурационный файл, из которого необходимо считать имя пользователя и пароль. |
| connect_timeout (добавлен в 2.1) | Значение по умолчанию: 30 | Таймаут подключения при подключении к серверу MySQL. |
| encrypted bool (добавлен в 2.0) |
| Указать, что поле 'password' является хэшем `mysql_native_password` |
| host | Значение по умолчанию: "localhost" | часть имени пользователя MySQL |
| host_all bool (добавлен в 2.1) |
| переопределить параметр host, заставляя Ansible применять изменения ко всем именам хостов для данного пользователя. Этот параметр нельзя использовать при создании пользователей |
| login_host | Значение по умолчанию: "localhost" | Хост, на котором работает база данных. |
| login_password | Пароль, используемый для аутентификации. | |
| login_port | Значение по умолчанию: 3306 | Порт сервера MySQL. Требуется, чтобы login_host был определен как отличный от localhost, если используется login_port. |
| login_unix_socket | Путь к сокету Unix-домена для локальных подключений. | |
| login_user | Имя пользователя, используемое для аутентификации. | |
| name обязательно | Имя пользователя (роли) для добавления или удаления | |
| password | установка пароля пользователя. | |
| priv | Строка привилегий 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 bool (добавлен в 2.1) |
| Включить или выключить двоичное протоколирование для подключения. |
| ssl_ca (добавлен в 2.0) | Путь к сертификату центра сертификации (CA). Если используется этот параметр, необходимо указать тот же сертификат, что и у сервера. | |
| ssl_cert (добавлен в 2.0) | Путь к сертификату открытого ключа клиента. | |
| ssl_key (добавлен в 2.0) | Путь к закрытому ключу клиента. | |
| 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) Python на удалённом хосте. Для 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
Статус
Этот модуль помечен как превью, что означает, что его интерфейс не гарантированно будет обратной совместимостью.
Техническое обслуживание
Этот модуль помечен как community, что означает, что он поддерживается сообществом Ansible. См. Техническое обслуживание и поддержка модулей для получения дополнительной информации.
Список других модулей, поддерживаемых сообществом Ansible, см. здесь.
Автор
- 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.6/modules/mysql_user_module.html