non*_*enz 12 mysql shell provisioning vagrant
从 shell 脚本更改 my.cnf 中的 mysql 绑定地址的最佳方法是什么?有没有办法使用像 mysqladmin 这样的工具,或者我应该使用 sed 还是我应该简单地将它附加到 my.cnf 并希望第二个条目覆盖第一个条目(这听起来很恶心)。我尝试为 vagrant 编写一个简单的 shell 配置器,它在安装 mysql-server 后运行,以允许来自 vm 外部的连接。
小智 19
添加@nonsenz 所说的内容,如果您使用 puphpet.com 的配置脚本,那么您可以将 bash 文件添加到 /puphpet/files/startup-always 文件夹并将所有命令放在那里。任何时候 vagrant 启动或重新加载它都会调用脚本:
#!/bin/bash
echo "Updating mysql configs in /etc/mysql/my.cnf."
if [ 'sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf' ]; then
echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
fi
Run Code Online (Sandbox Code Playgroud)
更好(以实现更清洁的输出)
#!/bin/bash
echo "Updating mysql configs in /etc/mysql/my.cnf."
sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."
sudo service mysql stop
sudo service mysql start
Run Code Online (Sandbox Code Playgroud)
这使我能够通过 vagrant 将我的 IDE (PhpStorm) 直接连接到我的来宾计算机上的数据库。当然,我给了来宾 mysql 用户访问 '%' 的权限,并将来宾上的端口 3306 转发到主机上的端口 (3309)。访问授权也可以在这个文件中完成。
更好(mysql执行添加)
#!/bin/bash
echo "Updating mysql configs in /etc/mysql/my.cnf."
sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."
echo "Assigning mysql user user1 access on %."
sudo mysql -u user1 -pyourpassword --execute "GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%' IDENTIFIED BY 'yourpassword' with GRANT OPTION; FLUSH PRIVILEGES;" yourdatabase
echo "Assigned mysql user user1 access on all hosts."
sudo service mysql stop
sudo service mysql start
Run Code Online (Sandbox Code Playgroud)
non*_*enz 13
在这种情况下,sed 看起来是最简单的方法(在全新安装之后):
sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12817 次 |
| 最近记录: |