mysql_user - 從MySQL數據庫添加或刪除用戶。
概要
- 從MySQL數據庫添加或刪除用戶。
要求(在執行模塊的主機上)
- MySQLdb的
選項
參數 | 需要 | 默認 | 選擇 | 注釋 |
---|---|---|---|---|
append_privs
(1.4 加入)
|
no | no |
|
將priv定義的權限附加到此用戶的現有權限,而不是覆蓋現有的權限。
|
check_implicit_admin
(1.3 加入)
|
no | no |
|
檢查mysql是否允許以root / nopassword身份登錄,然后再嘗試提供的憑據。
|
CONFIG_FILE
(2.0 加入)
|
no | 〜/ .my.cnf |
指定要從中讀取用戶和密碼的配置文件。
|
|
connect_timeout
(2.1 加入)
|
no | 30 |
連接到MySQL服務器時的連接超時。
|
|
encrypted(加密)
(2.0 加入)
|
no | no |
|
表示'密碼'字段是一個`mysql_native_password`哈希值
|
host |
no | localhost |
the 'host' part of the MySQL username
|
|
host_all
(2.1加入)
|
no | no |
|
覆蓋host選項,使給定用戶對所有主機名進行ansible應用更改。創建用戶時不能使用此選項
|
login_host |
no | localhost |
運行數據庫的主機。
|
|
login_password |
no |
用於驗證的密碼。
|
||
login_port |
no | 3306 |
MySQL服務器端口。如果使用login_port,則需要將
login_host
定義為其他本地主機。
|
|
login_unix_socket |
no |
到本地連接的Unix域套接字的路徑。
|
||
login_user |
no |
用於驗證的用戶名。
|
||
name |
yes |
添加或刪除的用戶名稱(角色)
|
||
password |
no |
設置用戶密碼。
|
||
priv |
no |
MySQL特權字符串格式為:
db.table:priv1,priv2
。
可以通過使用正斜杠分隔每個特權來指定多個權限:
db.table:priv/db.table:priv
。
該格式基於MySQL
GRANT
語句。
數據庫和表名可以引用,MySQL風格。
如果使用列權限,則該
priv1,priv2
部分必須與
SHOW GRANT
語句完全相同。如果不遵循,模塊將始終報告更改。它包括通過permission(
SELECT(col1,col2
)而不是
SELECT(col1
SELECT(col2))分組列)。
|
||
SQL_LOG_BIN
(2.1加入)
|
no | yes |
|
是否應該為連接啟用或禁用二進制日志記錄。
|
ssl_ca
(2.0加入)
|
no |
證書頒發機構(CA)證書的路徑。此選項(如果使用)必須指定與服務器使用的相同的證書。
|
||
ssl_cert
(2.0加入)
|
no |
客戶端公鑰證書的路徑。
|
||
ssl_key
(2.0加入)
|
no |
客戶端私鑰的路徑。
|
||
state | no | present |
|
用戶是否應該存在 當
absent時
刪除用戶。
|
update_password
(2.0加入)
|
no | always |
|
如果不同,always將更新密碼。
on_create
只會為新創建的用戶設置密碼。
|
例子
# 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
注意
- MySQL服務器的默認login_user為“root”,無密碼。為了將此用戶作為冪等playboot的一部分,您必須至少創建兩個任務:首先必須更改root用戶的密碼,而不提供任何login_user / login_password詳細信息。第二個必須刪除包含新的根憑證的〜/ .my.cnf文件。然后,通過從文件讀取新的憑據,隨后的游戲將成功。
- 目前,只支持mysql_native_password加密密碼散列模塊。
- 需要遠程主機上的MySQLdb Python包。對於Ubuntu,這和apt-get install python-mysqldb一樣簡單。(請參閱apt。)對於CentOS / Fedora,這與yum安裝MySQL-python一樣簡單。(見yum。)
- 無論
login_password
和login_user
你逝去的憑據是必需的。如果不存在,則模塊將嘗試從中讀取憑據~/.my.cnf
,最后回到使用MySQL默認登錄的“root”,沒有密碼。
狀態
該模塊被標記為預覽,這意味着它不能保證具有向后兼容的界面。