mysql - 为 MySQL 打开一个 vagrant 服务器

标签 mysql ubuntu vagrant

简介

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

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

我不想拥有 10 台,可能是 100 台 VM(都占用硬盘空间),而是只拥有一个 Vagrant 实例。

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

  • 一台 Vagrant 机器(目前我有一台运行 Ubuntu 服务器的空白机器)
  • 安装了 mySQL(它是)
  • 此 MySQL 可通过非 SSL 方法访问

其他要点:

  • 这不需要是安全的:这是一个测试/转储/重建服务器
  • 不使用真实数据,只使用测试数据
  • 这只会在本地可用

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

我是一名开发人员,而不是服务器专家:我认为我应该打开一个端口并通过,但正如我所说:我不是专家。有点意识到我以前从来没有用过“不安全”/非 SSL 的方式来做这件事!

因此……结束了一段很长的介绍:

问题

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

  • 我应该能够运行不使用 SSL 的本地 PHP 脚本
  • 我不想完全重建 vagrant 服务器:我只想要打开它的命令/步骤

示例 PHP 登录参数数组:

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

当前采取的措施

按照以下几个教程:

  • 已编辑:/etc/mysql/mysql.conf.d/mysqld.cnf127.0.0.1 更改为 0.0.0.0<
  • sudo systemctl restart mysql.service

登录到mysql:

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

FLUSH PRIVILEGES;

(用户名/密码和 IP 地址已更改,因为这是一个论坛:))

编辑:问题的答案

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      -               

最佳答案

在合并/翻译了一些博文之后,从每篇博文中获得了我需要的东西:

回答

以下是在 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监听这个端口(external-locking and bind-address)
  • 设置/修改用户以实际能够阅读它 (.. @'%')

希望对其他人有帮助。

关于mysql - 为 MySQL 打开一个 vagrant 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51726253/

相关文章:

ubuntu - Ubuntu 上的配置 CoTurn 不起作用

virtualbox - 如何将 Docker 镜像转换为( Vagrant )VirtualBox 盒子?

testing - Vagrant:如何配置 vagrant 以使用不同的 Vagrantfile

android - 如何在Mysql数据库表中存储用户特定数据?

php - 使用逗号分隔字符串的搜索列

linux - SCP 命令不起作用 - 需要将文件从 Windows 本地主机复制到 Linux

ubuntu - 允许 docker 容器连接到本地/主机 postgres 数据库

ruby - 是否可以从 vagrant box 调试 Chef Recipe ?

mysql - 在 MySQL 中查找缺失的选票

php - Mysql Group By Last Slno(最新版本)