简介
我是一名 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.cnf
将127.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/