通过 debconf-set-selections 为 mysql 预配置一个空密码
I am setting up a bash script to automate the building of a LAMP environment.
I am using debconf-set-selections
to set options before installing mysql, phpmyadmin, etc ...
It works mainly great. But the problem is that I have to set an empty password for mysql and it still asks for the password during installation even with the lines typed before :
echo "mysql-server-5.5 mysql-server/root_password password" | debconf-set-selections
echo "mysql-server-5.5 mysql-server/root_password_again password" | debconf-set-selections
解决方案
The recommended approach for setting an empty password during mysql-server
's package installation process using debconf-set-selections
depends on the package version in hand.
MySQL 5.7
Although it's possible to configure the password to be empty, the installation process will automatically enable the authentication plugin
auth_socket
in such a case. Hence, the password-less login shall be conditioned on usingUNIX
socket based authentication (e.g. requiring the login to be made from the user accountroot
on the local machine).For the package provided by the MySQL APT repository:
sudo debconf-set-selections <<< "mysql-community-server mysql-community-server/root-pass password " sudo debconf-set-selections <<< "mysql-community-server mysql-community-server/re-root-pass password "
For the package provided by the Ubuntu package repositories:
sudo debconf-set-selections <<< "mysql-server mysql-server/root-password password " sudo debconf-set-selections <<< "mysql-server mysql-server/root-password_again password "
MySQL 5.5 and MySQL 5.6
The solution suggested by this answer should work, with a minor addition that confirms the empty password:
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password "''"" sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password "''""
A fallback solution
If all approaches fail, it's possible to circumvent the issue and implicitly leave the password blank by preventing debconf
from asking the user for a password altogether. Unfortunately, this applies to all questions, rather than just the password-related ones.
Here are two methods that achieve the desired result:
Set
debconf
's frontend tononinteractive
:DEBIAN_FRONTEND=noninteractive apt-get install [-y] [-q] mysql-server
Set
debconf
's priority level tocritical
:DEBIAN_PRIORITY=critical apt-get install [-y] [-q] mysql-server
This method is probably preferable as it permits the display of critical messages.
相关文章