【问题标题】:vagrant ssh provisioning - mysql passwordvagrant ssh 配置 - mysql 密码
【发布时间】:2013-09-15 12:20:00
【问题描述】:

我正在使用 SSH 配置构建一个 Vagrant box (CentOS 6.4)。

一切正常,LAMP 组件已安装并启动,但我已经到了应该保护 MySql 的步骤(设置 mysql 密码等)。

有 mysql_secure_installation 可以运行,但它不能在非交互模式下工作。

我可以跑

 /usr/bin/mysqladmin -u root password 'newpassword' 

但如果我多次配置同一个框,Mysql 将第一次接受新密码,但随后会报错。

是否有一种优雅的方法可以在配置时自动保护 MySql? (我没有使用 Chef/Puppet,只是简单的 SSH 配置)

【问题讨论】:

    标签: mysql vagrant provisioning


    【解决方案1】:

    一种可能的方法是:

    /usr/bin/mysql -uroot -pnewpassword -e 'SELECT CURDATE();' || /usr/bin/mysqladmin -u root password 'newpassword'
    

    说明:脚本首先尝试使用新密码连接mysql,只有在失败(即密码尚未设置)时才执行设置命令。

    【讨论】:

      【解决方案2】:

      在您的Vagrantfile 中添加如下行:

      Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
         <other code>
         ...
          config.vm.provision "shell", 
             inline: "mysqladmin -uroot -pcurrentpass password newpassword"
      
      end
      

      【讨论】:

        【解决方案3】:
        sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password root'
        sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password root'
        

        【讨论】: