主控端对被控端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
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"
报错原因 :此处是因为采用跳过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)
解决方法: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
解决方法如下:
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'