使用vagrant配置简单的mysql设置(使用shell配置程序)

时间:2014-08-26 03:22:41

标签: mysql linux centos vagrant virtualbox

为Vagrant提供回应" hello world"是一件轻而易举的事。哎呀,即使我能处理它!

但是当涉及到用户在配置盒子时实际想要做的事情,例如安装mysql,创建数据库和创建mysql用户时......那些事情似乎不太好看上班。 ARRG。

我正在使用虚拟CentOS服务器并安装MySQL顺利完成,但那是关于我遇到众所周知的砖墙的地方。请记住,我可以通过SSH轻松地完成所有这些事情(但当然这会破坏配置的目的):

echo "hello world"; <-- good

sudo yum install mysql-server -y; <-- good

sudo /sbin/service mysqld start; <-- good

sudo mysql create user 'mycooluser'@'%' identified by 'mypassword'; <-- BAD

我&#39;一直在谷歌上搜索所有的地方和最近的I&#39;特地为this article,但由于它是基于Ubuntu的,而不是CentOS的,我得到了马上,因为显然百胜没有按&卡住#39;知道debconf-utils是什么,而apt是。

任何人都可以为我阐明这一点吗?我不认为我的是一个令人发指的用例,我想做的就是拥有shell配置程序

  1. 安装mysql
  2. 创建数据库
  3. 创建用户并授予他所有权限
  4. 运行db_setup.sql以将表结构和数据添加到新数据库
  5. 请不要告诉我&#34;使用厨师或木偶&#34;。我已经尝试了,他们有自己的问题,老实说这些简单的要求有点过分。当然这些项目可以通过shell配置程序完成吗?

    非常感谢任何见解。你或许可以告诉我自己的结局。

1 个答案:

答案 0 :(得分:8)

这是我的Vagrantfile:

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

$script = <<SCRIPT
    set -x
    echo I am provisioning...
    date > /etc/vagrant_provisioned_at
    echo "hello world"
    yum install mysql-server -y
    /sbin/service mysqld start
    mysql -e "create user 'mycooluser'@'%' identified by 'mypassword'"

SCRIPT
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "chef/centos-6.5"
  config.vm.provision :shell, :inline => $script

end

vagrant up应该使用mysql和用户'mycooluser'来获得centos-6.5操作系统。

验证:

完成配置并在centos guest虚拟机操作系统中执行以下操作后,

vagrant ssh到框中。

mysql -uroot

mysql> SELECT User FROM mysql.user;
+------------+
| User       |
+------------+
| mycooluser |
| root       |
|            |
| root       |
|            |
| root       |
+------------+
6 rows in set (0.00 sec)

注意:您可能希望为“mycooluser”授予权限,以便使用mysql shell等登录。

可以找到更多详细信息here