1

多年来debconf-set-selections,Debian/Ubuntu 系统管理员一直使用该实用程序在 APT 开始实际安装包之前输入 MySQL root 用户的密码(例如apt install mysql-server)。

但是,如果您在没有此实用程序的情况下安装 MySQL,则root用户在表中将有一个空白密码字段mysql.users,这意味着您可以sudo mysql -u root在命令行中不输入密码。

如果这有效,为什么它不能在 shell 脚本中工作?

例如:

## this works fine in shell scripts (MySQL root user will have a blank password) ##
apt update
apt install mysql-server-8.0

## this only works when typed into the shell (not within a script) ##
mysql --user=root -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ABC123';"
mysql --user=root -e "FLUSH PRIVILEGES;"

PS我知道mysql_secure_installation向导和手动查询(替代),但我想知道为什么在Bash脚本等中使用空白密码会导致MySQL访问失败。它似乎与用户等常见问题无关,绑定地址、协议、主机、套接字或一般权限。

debconf-set-selections除了笨拙expect的猜测和检查之外,这里还有解决方案吗?

4

0 回答 0