如何编写脚本在 Ubuntu 上安装 MySQL 服务器?
sudo apt-get install mysql
将安装,但它也会要求在控制台中输入密码。
如何以非交互方式执行此操作?也就是写一个能提供密码的脚本?
#!/bin/bash
sudo apt-get install mysql # To install MySQL server
# How to write script for assigning password to MySQL root user
# End
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password your_password'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password your_password'
sudo apt-get -y install mysql-server
对于特定版本,例如 mysql-server-5.6
,您需要像这样指定版本:
sudo debconf-set-selections <<< 'mysql-server-5.6 mysql-server/root_password password your_password'
sudo debconf-set-selections <<< 'mysql-server-5.6 mysql-server/root_password_again password your_password'
sudo apt-get -y install mysql-server-5.6
对于 mysql-community-server,键值略有不同:
sudo debconf-set-selections <<< 'mysql-community-server mysql-community-server/root-pass password your_password'
sudo debconf-set-selections <<< 'mysql-community-server mysql-community-server/re-root-pass password your_password'
sudo apt-get -y install mysql-community-server
将 your_password 替换为所需的 root 密码。 (似乎 your_password 也可以为空的 root 密码留空。)
如果您的 shell 不支持 here-strings(zsh、ksh93 和 bash 支持它们),请使用:
echo ... | sudo debconf-set-selections
这应该可以解决问题
export DEBIAN_FRONTEND=noninteractive
sudo -E apt-get -q -y install mysql-server
当然,它会给你留下一个空白的 root 密码 - 所以你会想要运行类似的东西
mysqladmin -u root password mysecretpasswordgoeshere
之后为该帐户添加密码。
ENV DEBIAN_FRONTEND noninteractive
的 Dockerfile 中工作,但不能在 bash (12.04) 中工作
DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
DEBIAN_FRONTEND=noninteractive sudo -E apt-get -q -y install mysql-server
——就像一个魅力!
另一种使其工作的方法:
echo "mysql-server-5.5 mysql-server/root_password password root" | debconf-set-selections
echo "mysql-server-5.5 mysql-server/root_password_again password root" | debconf-set-selections
apt-get -y install mysql-server-5.5
请注意,这只是将密码设置为“root”。我无法使用简单的引号 ''
设置空白密码,但这个解决方案对我来说已经足够了。
基于解决方案 here。
利用:
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server
sudo mysql -h127.0.0.1 -P3306 -uroot -e"UPDATE mysql.user SET password = PASSWORD('yourpassword') WHERE user = 'root'"
不定期副业成功案例分享
mysql-server-5.1
部分更改为当前的 mysql 版本!mysql-server-<version>
替换为maria-db-<server>
转换为 MariaDB,如下所示。以下mysql-server/
的发生保持不变sudo apt-get install debconf-utils
之后