脚本通过 CentOS 安装没有密码提示的 mysql-server

Posted

技术标签:

【中文标题】脚本通过 CentOS 安装没有密码提示的 mysql-server【英文标题】:Script Install mysql-server without password prompt via CentOS 【发布时间】:2015-10-26 14:48:22 【问题描述】:

我的操作系统是 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 且无需密码提示的脚本。

非常感谢您的帮助。

【问题讨论】:

请注意,debconf-utils 是仅用于基于 Debian 的发行版的软件包。这就是命令失败的原因。 【参考方案1】:

mysql_secure_installation 是一个 shell 脚本。 因此您可以在脚本或任何其他用户交互部分中编辑 set_root_password() 函数。

【讨论】:

【参考方案2】:

怎么样

echo  "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('secret');" | mysql -u root

【讨论】:

【参考方案3】:

此代码适用于 vagrantfile:

password_match=`awk '/A temporary password is generated for/ a=$0 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

【讨论】:

以上是关于脚本通过 CentOS 安装没有密码提示的 mysql-server的主要内容,如果未能解决你的问题,请参考以下文章

用VMware装CentOS 5.5 安装成功 最后输入用户名和密码进入时 提示验证失败

在没有提示的情况下从 python-fabric 重置 mysql root 密码

centos6.5下忘记mysql密码

centos7安装mysql5.7修改设置密码策略

mysql 5.7 怎么修改默认密码随机密码

Centos7下安装MySQL详细步骤