通过 CentOS 脚本安装 mysql-server 没有密码提示
Script Install mysql-server without password prompt via CentOS
我的 OS 是 CentOS 6.6,我想知道如何通过 shell 脚本自动安装 mysql-server。
我发现有一个话题讨论了同样的问题,但在 CentOS 6 上失败了:install mysql on ubuntu without password prompt
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'
错误信息是
bash: debconf-set-selections: command not found
这是我的基本脚本
#!/bin/sh
# Make sure only root can run our script
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
#password setting
root_password='abc123'
#install mysql-server
yum install mysql mysql-server
#start service
service mysqld start
#MySQL Initial Setup
mysql_secure_installation
#This command needs root password and answers(y/n) for secure questions
有没有什么方法可以自动填写root密码并回答'y'大部分安全问题。
或者它有其他方法来实现同样的事情。即,自动安装 myaql-server 且无需密码提示的脚本。
非常感谢您的帮助。
mysql_secure_installation 是一个 shell 脚本。
因此您可以在脚本或任何其他用户交互部分中编辑 set_root_password() 函数。
怎么样
echo "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('secret');" | mysql -u root
这段代码在 vagrantfile 上对我有用:
password_match=`awk '/A temporary password is generated for/ {a=[=10=]} END{ print a }' /var/log/mysqld.log | awk '{print $(NF)}'`
mysql -u root -p$password_match --connect-expired-password -e "SET password FOR root@localhost=password('$password_match');"
mysql -u root -p$password_match -e "SHOW VARIABLES LIKE 'validate_password%';"
mysql -u root -p$password_match -e "SET GLOBAL validate_password_length=4;"
mysql -u root -p$password_match -e "SET GLOBAL validate_password_policy=LOW;"
mysql -u root -p$password_match -e "SHOW VARIABLES LIKE 'validate_password%';"
mysql -u root -p$password_match -e "SET password for root@localhost=password('root');"
mysql -u root -proot -e "flush privileges;"
echo "character-set-server=utf8" >> /etc/my.cnf
echo "default_password_lifetime=0" >> /etc/my.cnf
echo "validate_password_policy=LOW" >> /etc/my.cnf
echo "validate_password_length=4" >> /etc/my.cnf
systemctl restart mysqld
我的 OS 是 CentOS 6.6,我想知道如何通过 shell 脚本自动安装 mysql-server。
我发现有一个话题讨论了同样的问题,但在 CentOS 6 上失败了:install mysql on ubuntu without password prompt
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'
错误信息是
bash: debconf-set-selections: command not found
这是我的基本脚本
#!/bin/sh
# Make sure only root can run our script
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
#password setting
root_password='abc123'
#install mysql-server
yum install mysql mysql-server
#start service
service mysqld start
#MySQL Initial Setup
mysql_secure_installation
#This command needs root password and answers(y/n) for secure questions
有没有什么方法可以自动填写root密码并回答'y'大部分安全问题。
或者它有其他方法来实现同样的事情。即,自动安装 myaql-server 且无需密码提示的脚本。
非常感谢您的帮助。
mysql_secure_installation 是一个 shell 脚本。 因此您可以在脚本或任何其他用户交互部分中编辑 set_root_password() 函数。
怎么样
echo "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('secret');" | mysql -u root
这段代码在 vagrantfile 上对我有用:
password_match=`awk '/A temporary password is generated for/ {a=[=10=]} END{ print a }' /var/log/mysqld.log | awk '{print $(NF)}'`
mysql -u root -p$password_match --connect-expired-password -e "SET password FOR root@localhost=password('$password_match');"
mysql -u root -p$password_match -e "SHOW VARIABLES LIKE 'validate_password%';"
mysql -u root -p$password_match -e "SET GLOBAL validate_password_length=4;"
mysql -u root -p$password_match -e "SET GLOBAL validate_password_policy=LOW;"
mysql -u root -p$password_match -e "SHOW VARIABLES LIKE 'validate_password%';"
mysql -u root -p$password_match -e "SET password for root@localhost=password('root');"
mysql -u root -proot -e "flush privileges;"
echo "character-set-server=utf8" >> /etc/my.cnf
echo "default_password_lifetime=0" >> /etc/my.cnf
echo "validate_password_policy=LOW" >> /etc/my.cnf
echo "validate_password_length=4" >> /etc/my.cnf
systemctl restart mysqld