在没有密码提示的情况下在 Ubuntu 上安装 MySQL

问题描述 投票:0回答:4

如何编写脚本在 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
mysql bash ubuntu apt
4个回答
437
投票
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 可能不是 bash,而是 dash/ash 或一些基本的 unix shell。与 zshksh93bash 不同,这些 shell 不支持 here-strings

<<<
。所以你应该使用:

echo ... | sudo debconf-set-selections 

或更易读的多行字符串打印:

cat << EOF | sudo debconf-set-selections
mysql-server mysql-server/root_password password your_password
mysql-server mysql-server/root_password_again password your_password
EOF

您可以使用

debconf-get-selections
命令查看:

$ sudo debconf-get-selections | grep ^mysql
mysql-server    mysql-server/root_password_again    password    your_password
mysql-server    mysql-server/root_password  password    your_password

244
投票

这应该可以解决问题

export DEBIAN_FRONTEND=noninteractive
sudo -E apt-get -q -y install mysql-server

当然,它会给你留下一个空白的 root 密码——所以你会想要运行类似的东西

mysqladmin -u root password mysecretpasswordgoeshere

之后为帐户添加密码。


31
投票

另一种实现方式:

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.


3
投票

用途:

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'"
© www.soinside.com 2019 - 2024. All rights reserved.