LINUX.ORG.RU
ФорумAdmin

Установка через sh

 ,


0

1

Задача: установить/поменять пароль для mysql при установке через sh скрипт. или установить пароль вместе с установкой mysql. Новичок в данном вопросе, два дня мучаюсь. Последнее что хоть как то похоже, но неработает:

apt-get -y install mysql-server mysql-client

mysqladmin -u root password новый пароль

дебиан 9



Последнее исправление: gengi9 (всего исправлений: 1)

Ответ на: комментарий от kostik87

Нет результата, пароль не меняется. Не ругается, вообще никак не отвечает на данную строку. Код выполняется и тишина, как будто все хорошо. Причем установка mysql прошла успешно. в файле

/etc/mysql/debian.cnf
поле password = пустое

gengi9
() автор топика
Ответ на: комментарий от gengi9

Причем пароль реально пустой, через PuTTY заходит без пароля. И php не пускает с пустым паролем. $link = mysqli_connect('localhost', 'root', ", 'mysql'); Код ошибки errno: 1698 Текст ошибки error: Access denied for user 'root'@'localhost'

gengi9
() автор топика
Ответ на: комментарий от gengi9

И php не пускает с пустым паролем. $link = mysqli_connect('localhost', 'root', ", 'mysql'); Код ошибки errno: 1698 Текст ошибки error: Access denied for user 'root'@'localhost'

Он и не пустит, потому что пароля нет, пароля нет это не значит что пароль ".

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Ясно. Есть еще что нибудь? Вот это не работает.

echo "use mysql ; update user set Password=PASSWORD('новый пароль') WHERE User='root';" | mysql -u root

gengi9
() автор топика
Ответ на: комментарий от gengi9
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';" > /tmp/init.txt
mysqld_safe --basedir=/usr/local/mysql --datadir=/var/lib/mysql/ --init-file=/tmp/init.txt
anonymous
()

Я когда-то (в docker-образах) делал так:

MYSQL_ROOT_PASSWORD='*****'

#
# create initial /var/lib/mysql structure
#
[[ ! -d /var/lib/mysql/mysql ]] && \
    mysqld --defaults-file=/dev/null --user mysql --datadir /var/lib/mysql --initialize-insecure --console --skip-networking


#
# run mysqld in permissive mode
#
timeout=10 # seconds
mysqld -u mysql --skip-grant-tables --skip-networking &>/dev/null &
until mysqladmin ping &> /dev/null; do sleep 1; (( --timeout <= 0 )) && break; done
mysqladmin ping &> /dev/null || exit 1

#
# set password
#
mysql -BNre "
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD';
-- CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK;
-- ALTER USER 'root'@'%' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD';
-- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
"

#
# stop mysql
#
mysqladmin shutdown

spirit ★★★★★
()

Вообще же лучше пользоваться средствами менеджера пакетов (debconf):

https://serversforhackers.com/c/installing-mysql-with-debconf

MYSQL_ROOT_PASSWORD='*****'
export DEBIAN_FRONTEND="noninteractive"

debconf-set-selections <<< "mysql-server mysql-server/root_password password $MYSQL_ROOT_PASSWORD"
debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $MYSQL_ROOT_PASSWORD"

apt-get install -y mysql-server

mysql_secure_installation

spirit ★★★★★
()
Ответ на: комментарий от gengi9

Причем пароль реально пустой, через PuTTY заходит без пароля. И php не пускает с пустым паролем.

Это может быть из-за альтернативного auth plugin-а для пользователя root.
Сделайте select plugin from mysql.user where user='root';

Более подробно тут: https://websiteforstudents.com/mysql-server-installed-without-password-for-ro...

spirit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.