LINUX.ORG.RU

Можно ли корректно завершить MySQL от root'а без ввода пароля?


0

0

Сейчас останавливаю БД так:
/usr/local/mysql/bin/mysqladmin -u root -p shutdown

На что мускуль просит ввести мускулевский root-пароль. Можно ли как-то остановить MySQL (естественно под root'ом), чтобы мускулевский пароль не спрашивался?

★★

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

Во всяких мандривах, зюзях и федорах есть графические инструменты администрирования сервисов и там есть кнопка «останов». Одна беда их(инструментов) много и все разные :(

p.s. На будущее запомни, надо указывать дистрибутив и его версию. Это упрощает дальнейшее общение и усиливает желание помочь :)

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

>killall -9 mysqld :)

ты кроме как серпом по яйцам потом еще предложи наложить патч Бармина, который исправляет проблему автозапуска/автоостановки

alex-w ★★★★★
()

Ранее была тема о том, как бы так скормить пароль mysqldump (кажется), чтобы он не светился в списке процессов (в скрипте и без -p <пароль>).

Выяснилось, что этот пароль можно записать в файл и скормить mysqldump'у.

Может быть, с mysqladmin это тоже пройдёт?

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

Или при перезагрузке Slackware, система сама грохает мускуль по pid-файлу?

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

killall -9 mysqld :)

Ваще не вариант )))

Выяснилось, что этот пароль можно записать в файл и скормить mysqldump'у.


Ну как вариант, конечно...

SaBo ★★
() автор топика

А если через остановку сервиса?
service mysqld stop
кажется так.

impr
()
Ответ на: комментарий от SaBo

Спроси какой-нибудь стартовый скрипт для MySQL из арча или дебиана. Я просто MySQL не использую, только PostgreSQL, а там все по-другому устроено.

sysmouse
()
Ответ на: комментарий от SaBo

в дебиане это делается так:

MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
<...>
  'stop')
	# * As a passwordless mysqladmin (e.g. via ~/.my.cnf) must be possible
	# at least for cron, we can rely on it here, too. (although we have 
	# to specify it explicit as e.g. sudo environments points to the normal
	# users home and not /root)
	log_daemon_msg "Stopping MySQL database server" "mysqld"
	if ! mysqld_status check_dead nowarn; then
	  set +e
	  shutdown_out=`$MYADMIN shutdown 2>&1`; r=$?
	  set -e
	  if [ "$r" -ne 0 ]; then
	    log_end_msg 1
	    [ "$VERBOSE" != "no" ] && log_failure_msg "Error: $shutdown_out"
	    log_daemon_msg "Killing MySQL database server by signal" "mysqld"
	    killall -15 mysqld
            server_down=
	    for i in 1 2 3 4 5 6 7 8 9 10; do
              sleep 1
              if mysqld_status check_dead nowarn; then server_down=1; break; fi
            done
          if test -z "$server_down"; then killall -9 mysqld; fi
	  fi
        fi

        if ! mysqld_status check_dead warn; then
	  log_end_msg 1
	  log_failure_msg "Please stop MySQL manually and read /usr/share/doc/mysql-server-5.1/README.Debian.gz!"
	  exit -1
	else
	  log_end_msg 0
        fi
	;;
в файле /etc/mysql/debian.cnf прописан пароль для дебиановских системных скриптов
[client]
host     = localhost
user     = debian-sys-maint
password = ...
socket   = /var/run/mysqld/mysqld.sock

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

еще привелегии у debian-sys-maint должны быть соответствующие

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

sh /etc/rc.d/rc.mysqld stop
В скрипте /etc/rc.d/rc.mysqld перепиши пути, раз уж криво поставил mysql, чем не понравился mysql идущий с дистрибутивом? почему при сборке не воспользовался slackbuild'ом на mysql? что за самодеятельность вообще?

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

Вот те слаковский /etc/rc.d/rc.mysqld пути сам поправишь:

#!/bin/sh
SKIP="--skip-networking"

# Start mysqld:
mysqld_start() {
  if [ -x /usr/bin/mysqld_safe ]; then
    # If there is an old PID file (no mysqld running), clean it up:
    if [ -r /var/run/mysql/mysql.pid ]; then
      if ! ps axc | grep mysqld 1> /dev/null 2> /dev/null ; then
        echo "Cleaning up old /var/run/mysql/mysql.pid."
        rm -f /var/run/mysql/mysql.pid
      fi
    fi
    /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysql/mysql.pid $SKIP &
  fi
}

# Stop mysqld:
mysqld_stop() {
  # If there is no PID file, ignore this request...
  if [ -r /var/run/mysql/mysql.pid ]; then
    killall mysqld
    # Wait at least one minute for it to exit, as we don't know how big the DB is...
    for second in 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 \
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 60 ; do
      if [ ! -r /var/run/mysql/mysql.pid ]; then
        break;
      fi
      sleep 1
    done
    if [ "$second" = "60" ]; then
      echo "WARNING:  Gave up waiting for mysqld to exit!"
      sleep 15
    fi
  fi
}

# Restart mysqld:
mysqld_restart() {
  mysqld_stop
  mysqld_start
}

case "$1" in
'start')
  mysqld_start
  ;;
'stop')
  mysqld_stop
  ;;
'restart')
  mysqld_restart
  ;;
*)
  echo "usage $0 start|stop|restart"
esac
splinter ★★★★★
()
Ответ на: комментарий от SaBo

>> killall -9 mysqld :)

Ваще не вариант )))


ну почему. В официальном мане SIGTERM описан как вполне штатный метод остановки. Да и вон выше в скрипте так и делается

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