Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash mysql\u安全安装的ansible答案_Bash_Ansible - Fatal编程技术网

Bash mysql\u安全安装的ansible答案

Bash mysql\u安全安装的ansible答案,bash,ansible,Bash,Ansible,我不知道如何编写一个任务,它回答了mysql\u secure\u安装脚本的问题 我只有 shell: mysql_secure_installation <<< '1111' executable=/bin/bash shell:mysql\u secure\u安装我认为您最好的选择是编写一个剧本(或者更好,更改您的mysql角色),该剧本将重现mysql\u secure\u安装脚本。这有几个原因: 每次运行剧本时,脚本都会返回“更改”,这不是您想要的 编写任务更加灵

我不知道如何编写一个任务,它回答了mysql\u secure\u安装脚本的问题

我只有

shell: mysql_secure_installation  <<< '1111' executable=/bin/bash

shell:mysql\u secure\u安装我认为您最好的选择是编写一个剧本(或者更好,更改您的mysql角色),该剧本将重现
mysql\u secure\u安装
脚本。这有几个原因:

  • 每次运行剧本时,脚本都会返回“更改”,这不是您想要的
  • 编写任务更加灵活:您可以根据自己的设置添加、删除、更改和调整想要执行的操作
  • 你可以在这个过程中学习
基本上,
mysql\u secure\u安装
执行以下操作:

  • 设置根密码
  • 删除匿名用户
  • 删除根远程访问
  • 删除测试数据库
  • 假设您已经设置了mysql\u root\u密码,并添加了python mysqldb,如下所示:

        - name: Adds Python MySQL support on Debian/Ubuntu
          apt: pkg="python-mysqldb" state=present
          when: ansible_os_family == 'Debian'
    
        - name: Adds Python MySQL support on RedHat/CentOS
          yum: name=MySQL-python state=present
          when: ansible_os_family == 'RedHat'
    
    这可以通过以下方式实现:

    • 设置根密码

      - name: Sets the root password 
        mysql_user: user=root password="{{ mysql_root_password }}" host=localhost
      
    • 删除匿名用户

      - name: Deletes anonymous MySQL server user for ansible_fqdn
        mysql_user: user="" host="{{ ansible_fqdn }}" state="absent"
      
      - name: Deletes anonymous MySQL server user for localhost
        mysql_user: user="" state="absent"
      
    • 删除根远程访问

      - name: Secures the MySQL root user for IPV6 localhost (::1)
        mysql_user: user="root" password="{{ mysql_root_password }}" host="::1"
      
      - name: Secures the MySQL root user for IPV4 localhost (127.0.0.1)
        mysql_user: user="root" password="{{ mysql_root_password }}" host="127.0.0.1"
      
      - name: Secures the MySQL root user for localhost domain (localhost)
        mysql_user: user="root" password="{{ mysql_root_password }}" host="localhost"
      
      - name: Secures the MySQL root user for server_hostname domain
        mysql_user: user="root" password="{{ mysql_root_password }}" host="{{ ansible_fqdn }}"
      
    • 删除测试数据库

      - name: Removes the MySQL test database
        mysql_db: db=test state=absent
      

    这应该可以做到。注意,我快速浏览了一下系统上的
    mysql\u secure\u安装。我可能跳过了某些内容,或者其他版本中可能包含其他步骤。YMMV

    这就是我的工作原理:

    - name: Adds Python MySQL support on Debian/Ubuntu
      apt: pkg="python-mysqldb" state=present
      when: ansible_os_family == 'Debian'
    
    - name: Adds Python MySQL support on RedHat/CentOS
      yum: name=MySQL-python state=present
      when: ansible_os_family == 'RedHat'
    
    - name: Set the root password 
      mysql_user: login_user=root login_password="{{ root_password }}" user=root password="{{ root_password }}"
    
    - name: Secure the root user for IPV6 localhost (::1)
      mysql_user: login_user=root login_password="{{ root_password }}" user=root password="{{ root_password }}" host="::1"
    
    - name: Secure the root user for IPV4 localhost (127.0.0.1)
      mysql_user: login_user=root login_password="{{ root_password }}" user=root password="{{ root_password }}" host="127.0.0.1"
    
    - name: Secure the root user for localhost domain
      mysql_user: login_user=root login_password="{{ root_password }}" user=root password="{{ root_password }}" host="localhost"
    
    - name: Secure the root user for server_hostname domain
      mysql_user: login_user=root login_password="{{ root_password }}" user=root password="{{ root_password }}" host="{{ ansible_fqdn }}"
    
    - name: Deletes anonymous server user
      mysql_user: login_user=root login_password="{{ root_password }}" user="" host_all=yes state=absent
    
    - name: Removes the test database
      mysql_db: login_user=root login_password="{{ root_password }}" db=test state=absent
    

    看看这个Ansible模块,它为Ansible中的
    mysql\u secure\u安装提供了一种简单且幂等的方法


    示例-使用全新的MySQL安装

    -名称:测试mysql\u安全\u安装
    mysql\u安全\u安装:
    登录\u密码:“”
    新密码:password22
    用户:root
    登录主机:localhost
    主机:['localhost',127.0.0.1','::1']
    更改\u root\u密码:true
    删除\u匿名\u用户:true
    不允许\u根用户\u远程登录\u:true
    删除测试数据库:true
    注册:mysql\u secure
    #查看详细输出
    -调试:
    var:mysql\u安全
    
    示例-更改现有根密码

    -名称:测试mysql\u安全\u安装
    mysql\u安全\u安装:
    登录密码:password22
    新密码:password23
    用户:root
    登录主机:localhost
    主机:['localhost',127.0.0.1','::1']
    
    用法:您只需在
    剧本或角色目录中创建一个名为
    的目录
    ,并将
    mysql\u secure\u installation.py
    复制到其中

    您可以在下面的链接中找到完整的示例


    如果没有“state=缺席”,那么那些删除根远程访问的命令实际上不会确保您拥有根远程访问权限吗?没有。这样做是为了确保root只能连接本地计算机。不是来自任何其他机器,例如远程。对我来说,这不起作用。我必须更改行以将根密码设置为:
    -name:设置根密码mysql\u user:login\u user=root login\u password=”“user=root password=“{{root\u password}}”#使用空白密码登录,然后设置密码
    唯一的问题是,它不是幂等的。您可以通过添加一行删除任何旧的mysql数据,在将密码从空白设置为其他内容之前基本上清除mariadb或mysql,从而使该操作成为幂等的。