Как установить MySQL без запроса пароля?


26

Я пытаюсь установить MySQL на Ubuntu Natty без запроса пароля. Тем не менее, я получаю запрос на ввод пароля на некотором этапе после основной установки.

Кроме того, когда я ввожу то, что, по моему мнению, должно быть моим паролем (mymysqlpass), это дает мне уведомление об отказе в доступе. Затем, когда сценарий завершается, я могу войти в mysql без пароля, т.е. mysql -uroot, чего не должно быть.

#!/bin/bash
#This script installs mysql (latest build)
#Install MYSQL Server
mysql_pass=mymysqlpass
export DEBIAN_FRONTEND=noninteractive 
debconf-set-selections <<< 'mysql-server-5.1 mysql-server/root_password password '$mysql_pass''
debconf-set-selections <<< 'mysql-server-5.1 mysql-server/root_password_again password '$mysql_pass''
apt-get -y install mysql-server
#Configure Password and Settings for Remote Access
cp /etc/mysql/my.cnf /etc/mysql/my.bak.cnf
ip=`ifconfig eth0 | grep "inet addr"| cut -d ":" -f2 | cut -d " " -f1` ; sed -i "s/\(bind-address[\t ]*\)=.*/\1= $ip/" /etc/mysql/my.cnf
mysql -uroot -e "UPDATE mysql.user SET Password=PASSWORD('"$mysql_pass"') WHERE User='root'; FLUSH PRIVILEGES;"
sleep 10
mysql -uroot -p$mysql_pass -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '"$mysql_pass"'; FLUSH PRIVILEGES;"
#Restart
service mysql restart
echo "MySQL Installation and Configuration is Complete."

Я был бы очень опасен! зачем тебе это?
Паскаль Тариф

6
Когда вы инициализируете виртуальные машины, с одной стороны. Если вы действительно волнуетесь, я уверен, что вы могли бы сделать что-то вроде создания случайного криптографически безопасного пароля и сделать так, чтобы скрипт создавал задание cron, сообщая вам пароль в то время, когда трафика мало и система взломана. время. Просто убедитесь, что вы смотрите на компьютер в течение 5 секунд, прежде чем он исчезнет.
trysis

ОП говорит: «У меня постоянно запрашивают пароль», но в его примере кода у нас есть 2 строки, начинающиеся с этого, debconf-set-selectionsкоторые будут исключены, поскольку я считаю, что вопрос и пример кода были отредактированы в два разных момента времени, и теперь вопрос больше не имеет смысла.
мастази

Ответы:


46

Следующие команды устанавливают пароль root для MySQL, strangehatкогда вы устанавливаете mysql-serverпакет.

echo "mysql-server mysql-server/root_password password strangehat" | sudo debconf-set-selections
echo "mysql-server mysql-server/root_password_again password strangehat" | sudo debconf-set-selections

Обратите внимание, что при этом создается копия вашего пароля в незашифрованном виде /var/cache/debconf/passwords.dat(которая обычно может быть прочитана только пользователем root, и пароль будет удален системой управления пакетами после успешной установки mysql-serverпакета).

Обязательно используйте кавычки, если используете его в Dockerfile.

Теперь вы можете установить, mysql-serverи запрос пароля не появится:

sudo apt-get install mysql-server

11
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password my_password'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password my_password'
sudo apt-get -y install mysql-server

это установит MySQL без какого-либо вмешательства


7

Это может сработать, чтобы не подсказать вам:

export DEBIAN_FRONTEND=noninteractive

Что касается скрипта, я бы попробовал поместить пароль в кавычки:

mysql_pass="mymysqlpass"

1

Эта часть нуждается в перефразировке, если вы хотите поместить пароль в кавычки: 'mysql-server-5.1 mysql-server / root_password пароль' $ mysql_pass ''

Для того, чтобы:

"mysql-server-5.1 mysql-server/root_password password '$mysql_pass'"

Это сработало для меня (пустой пароль root):

sudo debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password password ''"
sudo debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password_again password ''"
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password ''"
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password ''"
export DEBIAN_FRONTEND=noninteractive
sudo -E apt-get install -y -q mysql-server libmysqlclient-dev
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.