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

Bri*_*ald 4 mysql linux virtualbox centos vagrant

让Vagrant回应"你好世界"是一件轻而易举的事.哎呀,即使我能解决这个问题!

但是当涉及到用户在配置盒子时实际上想要做的事情,例如安装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
Run Code Online (Sandbox Code Playgroud)

我一直在谷歌上搜索,最接近的是这篇文章,但由于它是基于Ubuntu而不是CentOS,我马上就被卡住了,因为显然yum不知道debconf-utils是什么,而apt确实如此.

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

  1. 安装mysql
  2. 创建数据库
  3. 创建用户并授予他所有权限
  4. 运行db_setup.sql以将表结构和数据添加到新数据库

请不要告诉我"使用厨师或木偶".我已经尝试了,他们有自己的问题,老实说这些简单的要求有点过分.当然这些项目可以通过shell配置程序完成吗?

非常感谢任何见解.你或许可以告诉我,我的智慧结束了.

nik*_*hil 9

这是我的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
Run Code Online (Sandbox Code Playgroud)

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

核实:

vagrant ssh 完成配置并在centos客户操作系统中执行以下操作后的框.

mysql -uroot

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

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

更多细节可以在这里找到.