为 MySQL 打开一个 vagrant 服务器

Opening a vagrant server for MySQL

简介

我是一名 php 开发人员。我使用 vagrant 来近似复制实时服务器环境。

我有很多非框架项目 运行ning,例如:简单的插件、作曲家存储库和代码片段。这些通常需要与数据库交互。

与其拥有 10 台,可能是 100 台 VM(全部占用硬盘 space),我只想拥有一个 Vagrant 实例。

现在,通常这很容易,但我不想映射文件夹或类似的东西。我只想:

其他要点:

PHP不能轻易隧道化,所有代码的用例都是在本地使用。

我是开发人员,不是服务器专家:我想我应该打开一个端口并通过,但正如我所说:我不是专家。有点意识到我以前从来没有用过 "insecure"/非 SSL 的方式!

因此……长篇介绍到此结束:

问题

如何在 ubuntu 流浪环境中不安全地公开 MySQL?

示例PHP 登录参数数组:

$connection_params = array(
'database' => 'cool_database',
'username' => 'open_database',
'password' => 'open_database_password',
'host' => 'domain-in-hosts-file.com',
'driver' => 'mysql',
);

当前采取的步骤

下面几个教程如下:

登录到 mysql:

GRANT ALL ON *.* TO 'open_database'@'192.168.55.1' IDENTIFIED BY "open_database_password" WITH GRANT OPTION;

FLUSH PRIVILEGES;

(usernames/passwords 和 ipaddress 已更改,因为这是一个论坛 :) )

编辑:问题的答案

netstat 输出:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      -               
tcp6       0      0 :::22                   :::*                    LISTEN      -               

在 combining/translating 一些博文之后,从每篇博文中获得我需要的东西:

回答

以下是在 vagrant 或类似连接上打开 mysql 的步骤。

端口开放

Vagrant 默认不通过该端口。这可以通过以下方式完成:

  • Vagrantfile 风格:config.vm.network "forwarded_port", guest: 3306, host: 3306
  • config.yaml 风格:

                        portmysql:
                            host: '3306'
                            guest: '3306'
    

修改MySQL配置

编辑/etc/mysql/my.cnf:

  • 注释掉skip-external-locking
  • 注释掉bind-address

这两项阻止 mysql 监听外部地址等

重启MySQL:

  • sudo service mysql restart

设置用户

  • 运行 GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
  • 刷新权限;

结束!

希望对你有所帮助。

主要问题是我读过的任何博客都没有真正解释所有项目。回顾一下:

  • 打开一个端口(通常是3306)
  • 设置mysql监听这个端口(外部锁定和绑定地址)
  • 设置up/modify一个用户实际能够阅读它(..@'%')

希望对其他人有所帮助。