MySQL User
Resumo
- Adiciona ou remove usuários de um banco de dados MySQL.
Parâmetros
Parâmetro | Tipo | Escolhas | Valores padrão | Comentários |
|---|---|---|---|
append_privs | boolean | Escolhas:
| Anexe os privilégios definidos por priv aos existentes para este usuário em vez de sobrescrever os existentes. |
check_hostname | boolean | Escolhas:
| Se deve validar o nome do host do servidor quando uma conexão SSL for necessária. Corresponde a MySQL CLIs --ssl switch. Definir como 'no' desabilita a verificação do nome do host. Use com cuidado. Esta opção não tem efeito no MySQLdb. |
check_implicit_admin | boolean | Escolhas:
| Verifique se o mysql permite o login como root/nopassword antes de tentar as credenciais fornecidas. Se for bem-sucedido, o login_user/login_password passado será ignorado. |
encrypted | boolean | Escolhas:
| Indica que o campo 'password' é um hash `mysql_native_password`. |
host | string | Default: "localhost" | A parte 'host' do nome de usuário MySQL. |
host_all | boolean | | Sobrescreve a opção de host, fazendo atmosphere aplicar alterações a todos os nomes de host de um determinado usuário. Esta opção não pode ser usada ao criar usuários. |
name | string | | Nome do usuário (perfil) a ser adicionado ou removido. |
password | string | | Define a senha do usuário. |
plugin | string | | Plugin do usuário para autenticação (``CREATE USER user IDENTIFIED WITH plugin``). |
plugin_auth_string | string | | Plug-in do usuário auth_string (``CREATE USER user IDENTIFIED WITH plugin BY plugin_auth_string``). |
plugin_hash_string | string | | Sequência de hash do plugin do usuário (``CREATE USER user IDENTIFIED WITH plugin AS plugin_hash_string``). |
priv | raw | | Strings de privilégios do MySQL no formato: db.table:priv1,priv2. Vários privilégios podem ser especificados separando cada um usando uma barra: db.table:priv/db.table:priv. O formato é baseado na instrução MySQL GRANT. Nomes de bancos de dados e tabelas podem ser citados, no estilo MySQL. Se privilégios de coluna forem usados, a parte priv1, priv2 deve ser exatamente como retornado por uma instrução SHOW GRANT. Se não for seguido, o módulo sempre relatará alterações. Inclui o agrupamento de colunas por permissão (SELECT (col1, col2) em vez de SELECT (col1, SELECT (col2))). Pode ser passado como um dicionário (veja os exemplos) . Suporta GRANTs para procedimentos e funções (veja os exemplos). |
resource_limits | dictionary | | Limite o usuário para determinados recursos do servidor. Fornecido desde MySQL 5.6/MariaDB 10.2. As opções disponíveis são MAX_QUERIES_PER_HOUR: num, MAX_UPDATES_PER_HOUR: num, MAX_CONNECTIONS_PER_HOUR: num, MAX_USER_CONNECTIONS: num. Usado quando state=present, caso contrário, ignorado. |
sql_log_bin | boolean | Escolhas:
| Se o log binário deve ser habilitado ou desabilitado para a conexão. |
state | string | Escolhas: | Se o usuário deve existir. Quando ausente, remove o usuário. |
tls_requires | dictionary | | Defina os requisitos para transporte seguro como um dicionário de requisitos (veja os exemplos). Os requisitos válidos são SSL, X509, SUBJECT, ISSUER, CIPHER. SUBJECT, ISSUER e CIPHER são complementares e mutuamente exclusivos com SSL e X509.https: // mariadb .com / kb / en / securing-connections-for-client-and-server / # require-tls. |
update_password | string | Escolhas:
| always atualizará as senhas se forem diferentes. on_create só definirá a senha para usuários recém-criados. |
Extende fragmentos da documentação do módulo MySQL Base.
Notas
- O servidor MySQL é instalado com login_user padrão de root e sem senha. Para proteger este usuário como parte de um manual idempotente, você deve criar pelo menos duas tarefas: 1) alterar a senha do usuário root, sem fornecer detalhes de login_user/login_password, 2) enviar um arquivo ~/.my.cnf contendo a nova raiz credenciais. As execuções subsequentes do manual terão sucesso ao ler as novas credenciais do arquivo.
- Atualmente, há suporte apenas para o módulo hash de senha criptografada mysql_native_password.
- Ambos login_password e login_user são necessários quando você está passando credenciais. Se nenhum estiver presente, o módulo tentará ler as credenciais de ~/.my.cnf e, finalmente, voltará a usar o login padrão do MySQL de ‘root’ sem senha.
- Se houver problemas com conexões locais, usar login_unix_socket=/path/to/mysqld/socket ao invés de login_host=localhost pode ajudar. Como exemplo, a instalação padrão do MariaDB da versão 10.4 e posterior usa o plugin de autenticação unix_socket por padrão que sem usar login_unix_socket=/var/run/mysqld/mysqld.sock (o caminho padrão) causa o erro Host '127.0.0.1' é não tem permissão para se conectar a este servidor MariaDB.
Exemplos
- name: Remove a conta de usuário anônimo para localhost
mysql_user:
name: ''
host: localhost
state: absent
- name: Remove todas as contas de usuários anônimos
mysql_user:
name: ''
host_all: yes
state: absent
- name: Cria o usuário do banco de dados com o nome 'bob' e senha '12345' com todos os privilégios do banco de dados
mysql_user:
name: bob
password: 12345
priv: '*.*:ALL'
state: present
- name: Cria o usuário do banco de dados usando uma senha com hash com todos os privilégios do banco de dados
mysql_user:
name: bob
password: '*EE0D72C1085C46C5278932678FBE2C6A782821B4'
encrypted: yes
priv: '*.*:ALL'
state: present
- name: Cria o usuário do banco de dados com senha e todos os privilégios do banco de dados e 'WITH GRANT OPTION'
mysql_user:
name: bob
password: 12345
priv: '*.*:ALL,GRANT'
state: present
- name: Cria usuário com senha, todos os privilégios de banco de dados e 'WITH GRANT OPTION' em db1 e db2
mysql_user:
state: present
name: bob
password: 12345dd
priv:
'db1.*': 'ALL,GRANT'
'db2.*': 'ALL,GRANT'
# Use 'PROCEDURE' em vez de 'FUNCTION' para aplicar GRANTs para um procedimento MySQL.
- name: Concede a um usuário o direito de executar uma função
mysql_user:
name: readonly
password: 12345
priv:
FUNCTION my_db.my_function: EXECUTE
state: present
# Observe que REQUIRESSL é um privilégio especial que deve se aplicar apenas a *.* Por si só.
# Definir este privilégio desta maneira está obsoleto.
# Use 'tls_requires' ao invés.
- name: Modifica o usuário para exigir conexões SSL
mysql_user:
name: bob
append_privs: yes
priv: '*.*:REQUIRESSL'
state: present
- name: Modifica o usuário para exigir conexão TLS com um certificado de cliente válido
mysql_user:
name: bob
tls_requires:
x509:
state: present
- name: Modifica o usuário para exigir conexão TLS com um certificado de cliente e cifra específicos
mysql_user:
name: bob
tls_requires:
subject: '/CN=alice/O=MyDom, Inc./C=US/ST=Oregon/L=Portland'
cipher: 'ECDHE-ECDSA-AES256-SHA384'
- name: Modifica o usuário para não exigir mais SSL
mysql_user:
name: bob
tls_requires:
- name: Certifique-se de que nenhum usuário chamado 'sally'@'localhost' exista, também passando as credenciais de autenticação
mysql_user:
login_user: root
login_password: 123456
name: sally
state: absent
# Exemplo check_implicit_admin
- name: >
Certifique-se de que nenhum usuário chamado 'sally'@'localhost' exista, também passando as credenciais de autenticação.
Se o mysql permitir login root/nopassword, tente primeiro sem as credenciais.
Se não for permitido, passe as credenciais
mysql_user:
check_implicit_admin: yes
login_user: root
login_password: 123456
name: sally
state: absent
- name: Certifique-se de que nenhum usuário chamado 'sally' exista
mysql_user:
name: sally
host_all: yes
state: absent
- name: Especifique concessões compostas por mais de uma palavra
mysql_user:
name: replication
password: 12345
priv: "*.*:REPLICATION CLIENT"
state: present
- name: Revoga todos os privilégios para o usuário 'bob' e a senha '12345'
mysql_user:
name: bob
password: 12345
priv: "*.*:USAGE"
state: present
# Exemplo de formato de string de privilégios
# mydb.*:INSERT,UPDATE/anotherdb.*:SELECT/yetanotherdb.*:ALL
- name: Exemplo usando login_unix_socket para se conectar ao servidor
mysql_user:
name: root
password: abc123
login_unix_socket: /var/run/mysqld/mysqld.sock
- name: Exemplo de pular o registro binário ao adicionar o usuário 'bob'
mysql_user:
name: bob
password: 12345
priv: "*.*:USAGE"
state: present
sql_log_bin: no
- name: Cria usuário 'bob' autenticado com o plugin 'AWSAuthenticationPlugin'
mysql_user:
name: bob
plugin: AWSAuthenticationPlugin
plugin_hash_string: RDS
priv: '*.*:ALL'
state: present
- name: Limita os recursos de bob a 10 consultas por hora e 5 conexões por hora
mysql_user:
name: bob
resource_limits:
MAX_QUERIES_PER_HOUR: 10
MAX_CONNECTIONS_PER_HOUR: 5
# Exemplo de arquivo .my.cnf para definir a senha de root
# [client]
# user=root
# password=n<_665{vS43y