我正在尝试编写一个脚本,以确保/etc/mysql/my.cnf中存在以下标记和配置:
[mysqld]
bind-address = 0.0.0.0
我目前有以下命令:
sudo sed -i "/bind-address/d" /etc/mysql/my.cnf
sudo sed -i "/\[mysqld\]/d" /etc/mysql/my.cnf
sudo sed -i "\$a[mysqld]\\nbind-address = 0.0.0.0" /etc/mysql/my.cnf
我删除任何包含' bind-address'的行或者' [mysqld]',然后附加mysqld标签以及我想要绑定的地址。但是,如果mysqld下有其他配置,那将无法正常工作。它最终将来自:
[mysqld]
some_config
some_config
bind-address = 127.0.0.1
到:
some_config
some_config
[mysqld]
bind-address = 0.0.0.0
有更清洁的方法吗?谢谢。
编辑:我决定只更换默认的' bind-address = 127.0.0.1'在/etc/mysql/mysql.conf.d/mysqld.cnf下,这将起到同样的作用。
答案 0 :(得分:1)
使用sed,您可以定义一个地址范围,以更改\[mysqld\]
和下一个^ *\[
(或文件末尾)之间的绑定地址值:
sed -i '/\[mysqld\]/,/^ *\[/{s/\(bind-address *= *\).*/\10.0.0.0/}' file