热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

debconfsetselectionsmysql_在Ubuntu上的MySQL脚本安装

问题描述我需要编写一个脚本,该脚本将通过全新的Ubuntu服务器安装来构建服务器。在诸如Apache和PHP之类的东西中,它需要安装MySQL。唯一的问

问题描述

我需要编写一个脚本,该脚本将通过全新的Ubuntu服务器安装来构建服务器。在诸如Apache和PHP之类的东西中,它需要安装MySQL。唯一的问题是,当我使用apt-get安装MySQL时,安装有时会弹出一个对话框,允许我键入root密码。即,需要人与人之间的互动。

如何在安装过程中绕过此屏幕并在仍然使用apt-get安装MySQL的同时避免人为干预?

最佳回答

您需要预先配置debconf数据库。尝试此操作之前,需要先安装debconf。

mysql和ubuntu的版本可能会改变这一行:

echo mysql-server mysql-server/root_password select PASSWORD | debconf-set-selections

echo mysql-server mysql-server/root_password_again select PASSWORD | debconf-set-selections

例如,您需要使用它:

echo mysql-server-5.0 mysql-server/root_password password PASSWORD | debconf-set-selections

echo mysql-server-5.0 mysql-server/root_password_again password PASSWORD | debconf-set-selections

次佳回答

尽管FAI和类似系统在企业环境中很有帮助(并且他应该了解它们),但不幸的是,它们并不是万灵药。

例如,如果他在远程机器上工作,可能是托管,租用的服务器,没有受信任或专用网络的托管服务器,或者是EC2之类的云环境,该怎么办?没有任何一种PXE netboot可以在那里工作。但是,Puppet和Chef似乎是可以帮助他的更通用的工具。

cat <

Name: ...

Template: ...

Value: ...

Owners: ...

Variables:

....

....

EOF

您可以从已经建立的系统上的debconf数据库中获取正确的值。这种技术使您可以将整个过程粘贴在单个shell脚本中。例如&#xff0c;在/var/cache/debconf/passwords.dat中(请注意&#xff0c;在Debian&#xff0c;5.1和Ubuntu上均可使用5.0&#xff0c;额外的输入不会对您造成任何伤害)&#xff1a;

cat <

Name: mysql-server/root_password

Template: mysql-server/root_password

Value: YOURPASSWORD

Owners: mysql-server-5.1

Flags: seen

Name: mysql-server/root_password_again

Template: mysql-server/root_password_again

Value: YOURPASSWORD

Owners: mysql-server-5.1

Flags: seen

Name: mysql-server/root_password

Template: mysql-server/root_password

Value: YOURPASSWORD

Owners: mysql-server-5.0

Flags: seen

Name: mysql-server/root_password_again

Template: mysql-server/root_password_again

Value: YOURPASSWORD

Owners: mysql-server-5.0

Flags: seen

EOF

另一种方法&#xff0c;可能更简单&#xff1a;(从debconf-utils包中收集debconf-get-selections或debconf-show的答案)&#xff1a;

echo "Installing MySQL 5.0.."

sudo apt-get install -qqy debconf-utils

cat <

mysql-server-5.0 mysql-server/root_password password YOURPASSWORD

mysql-server-5.0 mysql-server/root_password_again password YOURPASSWORD

mysql-server-5.0 mysql-server/root_password seen true

mysql-server-5.0 mysql-server/root_password_again seen true

EOF

/usr/bin/apt-get -y install mysql-server-5.0 mysql-server

运行debconf-set-selections后&#xff0c;检查您的答案&#xff1a;cat /var/cache/debconf/passwords.dat

并且&#xff0c;在测试时&#xff0c;请确保删除并清除所有数据库(尤其是存储该数据库的mysql数据库)&#xff0c;并修复配置数据库&#xff0c;以防它们损坏&#xff1a;

apt-get --purge remove mysql-server*; /usr/share/debconf/fix_db.pl

有关此问题的一些提示&#xff1a;1)您必须具有seeed标志和_again密码。 2)您不得在密码前后加上引号。它将在MySQL查询中不加引号&#xff0c;因此如果需要&#xff0c;您必须自己将其引号。这也意味着没有空格(我认为)3)如果遇到问题&#xff0c;请手动进行预置&#xff0c;然后亲自(在普通终端/tty中)直接运行MySQL安装&#xff0c;并查看debconf告诉您的内容。它会告诉您那里的警告和错误。

第三种回答

如果您需要重建多个服务器&#xff0c;强烈建议您查看类似Puppet的内容&#xff0c;而不是编写Shell脚本。 Puppet具有描述性语言&#xff0c;因此您可以定义系统的外观&#xff0c;而不是系统的外观。程序包类型具有responsefile选项&#xff0c;该选项使您可以在Steven的答案中定义debconf答案。

参考资料



推荐阅读
author-avatar
小圈44
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有