Ansible mysql_user模块授权远程用户

Ansible mysql_user 模块

主控端对被控端mysql服务器 添加删除用户,授权远程用户登录,访问

1.ansible服务器安装 mysql 模块

阿里云yum源
[root@localhost ansible]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
安装epel扩展库
[root@localhost ansible]# yum -y install epel-release.noarch
安装python-pip工具
[root@localhost ansible]# yum -y install python-pip

升级pip工具到最新版本
[root@localhost ansible]# pip install --upgrade pip
安装 MySQL-python 模块,大小写必须相同
[root@localhost ansible]# pip install MySQL-python


2.为被控端添加 用户,并授权远程访问

mysql_user模块参数

login_host=“localhost” 指定本地root用户登录本机mysql
login_password=“123.com” root用户的登录密码
login_user=“root” 为root用户或者mysql用户
login_port=“3306” 数据库端口号
name="" 指定grant授权用户
password="" grant授权用户密码
priv="" 库名.SQL语句权限,GRANT
host="" 授权远程登录的IP地址,一般为 网段.% 或者直接 %
state=“present” 创建授权用户
state=“absent” 删除授权用户

ahdoc模式写法创建授权用户,验证模块正确时使用

[root@localhost ansible]# ansible mysql -m mysql_user -a “login_host=‘localhost’ login_password=“123.com” login_user=“root” login_port=“3306” name=“user8” password=“123.com” priv=”.:ALL,GRANT" host=“192.168.10.%” state=“present”"

playbook剧本写法创建授权用户,执行自动化部署时使用

- hosts: mysql
  remote_user: root
  tasks:
      - name: grant mysql user
        mysql_user:
        	login_host: "localhost"
        	login_user: "root"
      		login_password: "123.com"
      		login_port: "3306"
      		name: "user1"
      		password: "123.com"
      		host: "192.168.10.%"
      		priv: "*.*:ALL,GRANT"
      		state: "present"

3.主控端使用mysql_user模块的常见报错

一、报错1,如下图

Ansible mysql_user模块授权远程用户_第1张图片

报错原因 :此处是因为采用跳过mysql密码登录后,修改的 mysql.user表中的密码。但是默认的初始密码还存在,采用 set password=password(’…’);的方式从新修改一次mysqlroot密码就好了

[root@localhost ~]# mysql -u root -p123.com

​	mysql> set password =password("123.com");
​	Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> set password =password("123.com");

Query OK, 0 rows affected, 1 warning (0.01 sec)

二、报错2,如下图

Ansible mysql_user模块授权远程用户_第2张图片

解决方法:mysql被控端安装 MySQL-python
下载阿里云网络yum源
[root@localhost ansible]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost yum.repos.d]# yum -y install MySQL-python.x86_64 

三、报错3,如下图

Ansible mysql_user模块授权远程用户_第3张图片
原因未知

解决方法如下:


1.创建一个/var/lib/mysql/目录,用来拷贝 mysql.sock的链接文件
[root@localhost ansible]# ansible mysql -m file -a 'path=/var/lib/mysql state=directory'

2.将/usr/local/mysql/mysql.sock的链接文件拷贝到/var/lib/mysql目录当中

[root@localhost ansible]# ansible mysql -m file -a 'state=link src=/usr/local/mysql/mysql.sock path=/var/lib/mysql/mysql.sock'

你可能感兴趣的:(Ansible)