【问题标题】:Install MySQL on Ubuntu without a password prompt在没有密码提示的情况下在 Ubuntu 上安装 MySQL
【发布时间】:2011-12-06 01:56:37
【问题描述】:

如何编写脚本在 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


【解决方案1】:
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,key 略有不同:

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-stringszshksh93bash 支持它们) , 使用:

echo ... | sudo debconf-set-selections 

【讨论】:

  • 确保将mysql-server-5.1部分更改为当前的mysql版本!
  • 此答案通过将mysql-server-&lt;version&gt; 替换为maria-db-&lt;server&gt; 来转换为MariaDB,如下所示。 mysql-server/ 的以下发生 保持不变
  • - 部分是不必要的 - 对我来说就像一个魅力,没有它更通用。
  • 这在sudo apt-get install debconf-utils之后工作得很好
  • @Lukx 对于 MariaDB,包是 mariadb-server,而不是 maria-db-server。无论如何感谢您的说明。
【解决方案2】:

用途:

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'"

【讨论】:

  • 谢谢!在 sudo 之外定义变量总是让我着迷。
【解决方案3】:

这应该可以解决问题

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

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

mysqladmin -u root password mysecretpasswordgoeshere

然后为帐户添加密码。

【讨论】:

  • 经过测试并在带有 MySQL 5.5 的新 Ubuntu 12.04 实例中运行
  • 似乎可以在带有 ENV DEBIAN_FRONTEND noninteractive 的 Dockerfile 中工作,但不能在 bash (12.04) 中工作
  • 如果您使用 sudo 安装,请使用 -E 以便传递环境变量。例如。 sudo -E apt-get -q -y install mysql-server.
  • 你也可以在命令前直接添加env变量(不污染外部环境)——DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
  • 在 Debian 8.2 上为我工作——我结合了 @PatrickCullen 和 @yoniLavi 得到了 DEBIAN_FRONTEND=noninteractive sudo -E apt-get -q -y install mysql-server——就像一个魅力!
【解决方案4】:

另一种使其工作的方法:

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的解决方案。

【讨论】:

  • echo 'mysql-server-5.5 mysql-server/root_password 密码' | sudo debconf-set-selections 可以为我指定空白密码。
  • @TsuneoYoshioka 不适合我。如果我在最后放两个空格,它会将我的密码设置为一个空格。有一个空格,它仍然会尝试给出提示,然后搞砸安装。
猜你喜欢
  • 1970-01-01
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 2011-12-29
  • 2014-07-14
  • 2023-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多