从shell脚本中更改my.cnf中的mysql绑定地址的最佳方法是什么? 有没有办法使用像mysqladmin这样的工具,或者我应该使用sed,还是应该简单地将它附加到my.cnf,并希望第二项覆盖第一个(这听起来不舒服)。 我尝试编写一个简单的shell供应器,用于在安装mysql-server之后运行以允许来自vm之外的连接。
添加到@nonsenz所说的内容,如果你使用puphpet.com的供应脚本,那么你可以添加一个bash文件到/ puphpet / files / startup-always文件夹,并把所有的命令放在那里。 任何时候stream浪者开始或重新加载它会调用脚本:
#!/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
更好(让更清洁的产品)
#!/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
这使我能够通过stream浪汉将我的IDE(PhpStorm)直接连接到客户机器上的数据库。 当然,我给客人mysql用户访问'%',并将guest虚拟机上的端口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
看起来像sed是在这种情况下最简单的方法(干净的安装后):
sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
augtool -s set '/files/etc/mysql/my.cnf/target[ . = "mysqld"]/bind-address 0.0.0.0'
Ubuntu软件包被称为“augeas-tools”
听起来你正在寻找Augeas 。
项目页面在这里 ,一些文档和例子在这里。 MySQL包含在股票镜头页面,但不幸的是,文档现在链接到404页面。
这里还有一些在Puppet中使用它的例子 。