Имя: Пароль:
IT
Админ
#!/bin/sh - не получается создать пользователя MySQL
0 vde69
 
05.08.22
23:01
#!/bin/sh

MYSQLLOGIN="major_user"
MYSQLPASSWORD=`echo -e time | md5sum | sed 's/[^[:alnum:]]\+//g'`

# set SQL user and password
killall mysqld
sleep 2

# запускаемся без пароля
${PHPMYSQLPATH}/mysql/bin/mysqld_safe --skip-grant-tables --user=root --bind-address=127.0.0.1 &
echo "GRANT ALL PRIVILEGES ON db_terminal.* TO '${MYSQLLOGIN}'@'localhost' IDENTIFIED BY '${MYSQLPASSWORD}' WITH GRANT OPTION; FLUSH PRIVILEGES;" | ${PHPMYSQLPATH}/mysql/bin/mysql -u root

# сброс процессов
sleep 1
killall mysqld_safe
killall mysqld
sleep 2

# Запуск службы MySQL
cd ${PHPMYSQLPATH}/mysql
nice -n 20 ${PHPMYSQLPATH}/mysql/bin/mysqld_safe --user=mysql --bind-address=127.0.0.1 &

скрипт вроде нормально выполняется, но пользователь не создается, из консоли запускаю GRANT - все нормально отрабатывает.
Суть в том, что мне нужно без ввода пароля создать юзера, скрипт выполняется под root

может дело в --skip-grant-tables он просто не дает создать нового юзера?
1 Asmody
 
05.08.22
23:25
(0) skip-grant-tables не загружает таблицы привилегий.
FLUSH PRIVILEGES; в начало sql-скрипта попробуй добавить
2 Garykom
 
гуру
05.08.22
23:27
а CREATE USER то где?
3 vde69
 
05.08.22
23:34
(1) уже попробовал, не помогает
4 vde69
 
05.08.22
23:36
победил, основной затык в отсутствие паузу

${PHPMYSQLPATH}/mysql/bin/mysqld_safe --skip-grant-tables --user=root --bind-address=127.0.0.1 &
sleep 2
echo "FLUSH PRIVILEGES; GRANT ALL PRIVILEGES ON db_terminal.* TO '${MYSQLLOGIN}'@'localhost' IDENTIFIED BY '${MYSQLPASSWORD}' WITH GRANT OPTION; " | ${PHPMYSQLPATH}/mysql/bin/mysql -u root
5 vde69
 
05.08.22
23:55
не совсем победил, но на верном пути, надо подобрать тайминг и сделать проверку ошибок
6 vde69
 
06.08.22
00:00
короче когда я запускаю весь скрипт целиком из консоли - юзер создается
когда этот скрипт запускается другим скриптом - нифига...

в логе вроде все хорошо, mysql работает
7 Asmody
 
06.08.22
00:52
(6) "скрипт запускается другим скриптом" - под каким пользователем?
8 vde69
 
06.08.22
07:53
подсмотрел в другом пакете, оказывается у них есть предустановленный пользователь с паролем 1234, как говорится дверь на замке но стены и нету :) причем если поменять пароль этого юзера, то его все равно сбросят при инстале другие пакеты. короче жесть, единственное он смотрит только на 127.0.0.1 (на улицу вроде нет), но все равно это явная дыра :)

тем не менее я решил сделать "как все"

# set SQL user and password
${PHPMYSQLPATH}/mysql/bin/mysql -u zyadmin --password=1234 -e "grant ALL PRIVILEGES on db_terminal.* to ${MYSQLLOGIN}@localhost identified by '${MYSQLPASSWORD}'" > /dev/null 2>&1
if [ $? -ne 0 ] ; then
    # if fail, reset zyadmin
    ${PHPMYSQLPATH}/mysql/bin/reset_zyadmin
    ${PHPMYSQLPATH}/mysql/bin/mysql -u zyadmin --password=1234 -e "grant ALL PRIVILEGES on db_terminal.* to ${MYSQLLOGIN}@localhost identified by '${MYSQLPASSWORD}'" > /dev/null 2>&1
fi
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн