Проблема в использовании MySQL

Автор темы Nikolay 
28.08.2004 19:05
Проблема в использовании MySQL
Использую MySQL 4.0 for Linux инсталировал из RPM пакета входящего в состав Mandrake 10.0. Проблема следующая
Запускаю mysql
ERROR 2002:Cannot connect to local MySQL server through
socket '/var/lib/mysql/mysql.sock' (2)
Смотрю в документации раздел Common Errors, mysqld действительно не работает! Да вот что странно он у меня находится не в /usr/bin
а в /usr/sbin.Так и должно быть? Далее запускаю его
shell>/usr/sbin/mysqld
Warning:Can't create test file /var/lib/mysql/lower.test
Can't start server:Bindon unix socket:Permission denied
Do you already have another mysqld server running socket: /var/lib/mysql/mysql.sock?
Aborting
/usr/sbin/mysqld: Shutdown Complete

Сокета mysql.sock в /var/lib/mysql у меня нет. Другой сервер не
работает. В etc/servives у меня почему-то
есть две таких строки
mysql 3306/tcp
mysql 3306/udp
Как это понимать?Что он использует tcp или unix-sockets?Как мне посмотреть не занят ли порт 3306(команда)?
Прошу помочь тех,кто сталкивался с этой проблемой!

28.08.2004 19:54
Попытка решения проблемы
Цитата

Nikolay писал(а) :
Да вот что странно он у меня находится не в /usr/bin а в /usr/sbin.Так и должно быть?
Системные демоны не должны находиться в /usr/bin. Там находиться обычно только то что запускают обычные пользователи. Так что всё правильно.

Цитата

/usr/sbin/mysqld
Из под рута надо запускать...

И вообще, не надо так его запускать. Запустите как обычный сервис:
# /etc/init.d/mysql start

Цитата

В etc/servives у меня почему-то
есть две таких строки
mysql 3306/tcp
mysql 3306/udp
Как это понимать? Что он использует tcp или unix-sockets?
Он может использовать и то, и то, по умолчанию - unix-sockets.

Цитата

Как мне посмотреть не занят ли порт 3306(команда)?
У Вас - скорее всего не занят. А команда -
$ netstat -l

29.08.2004 10:04
Error 2002:
Cервер запустился.Но при запуске mysql он выдает
ERROR 2002:Can't connect to local MySQL server through socket /var/lib/mysq/mysql.sock (2)
Как справиться с этой ошибкой?
29.08.2004 10:15
+
Да и почему я не могу отключить сервер командой
mysqladmin -u root shutdown
mysqladmin:connect to server at 'localhost'failed
error:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock (2)
Check that mysqld is running and that the socket '/var/lib/mysql/mysql.sock'
exists!
30.08.2004 15:32
Попытка №2
Цитата

Nikolay писал(а) :
Cервер запустился.Но при запуске mysql он выдает
ERROR 2002:Can't connect to local MySQL server through socket /var/lib/mysq/mysql.sock (2)
Как справиться с этой ошибкой?
Вы уверены что сервер запустился? mysql.sock есть?
$ ps -ef
$ ls -l /var/lib/mysql/mysql.sock

Что в файле ошибок?
# cat /var/lib/mysql/*.err

Есть права на директории?
$ ls -ld /var /var/lib /var/lib/mysql

Из-под рута mysql работает?
# mysql

Цитата

Nikolay писал(а) :
Да и почему я не могу отключить сервер командой
mysqladmin -u root shutdown
По той же самой причине – недоступности сокета.

30.08.2004 17:39
Глупый вопрос
А
127.0.0.1 localhost
в /etc/hosts есть?

30.08.2004 17:57
Есть проблемы?
Ask Google :)
Вот что выдает в первом же ответе:
http://forums.devarticles.com/t4635/s.html
Цитата

i got the solution to my problem all i did was
chown -R mysql /var/lib/mysql/*
chgrp daemon /var/lib/mysql/*
and all worked fine

30.08.2004 18:15
Буду рад увидеть Попытку N 3
mysql.sock нету.
При запуске /etc/init.d/mysql start
Запускается cервер MySQL [OK]
но в списке процессов его нет
Файл ошибок следующий:
040830 18:12:07 mysqld started
040830 18:12:08 InnoDB: Started
040830 18:12:08 Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist
040830 18:12:08 Aborting

040830 18:12:08 InnoDB: Starting shutdown...
040830 18:12:10 InnoDB: Shutdown completed
040830 18:12:10 /usr/sbin/mysqld: Shutdown Complete

040830 18:12:10 mysqld ended

Из под root mysql не запускается

127.0.0.1 localhost
в /etc/hosts есть
Что-то после команд
chown -R mysql /var/lib/mysql/*
chgrp daemon /var/lib/mysql/*
All не worked fine

Что же делать?
30.08.2004 19:13
А вот и она...
Что находится в /var/lib/mysql/mysql , только из-под рута смотрите...
# ls -l /var/lib/mysql/mysql

Если такого нет, или там нет файла host.frm, то надо запустить
# /usr/bin/mysql_install_db

Если есть, то надо смотреть на права
# ls -l /var/lib/mysql /var/lib/mysql/mysql

30.08.2004 20:39
Answer:
ls /var/lib/mysql/mysql

columns_priv.frm columns_priv.MYI db.MYD func.frm func.MYI host.MYD tables_priv.frm tables_priv.MYI user.MYD
columns_priv.MYD db.frm db.MYI func.MYD host.frm host.MYI tables_priv.MYD user.frm user.MYI

ls -l /var/lib/mysq/mysql
-rw-rw---- 1 root root 8778 Авг 30 20:02 columns_priv.frm
-rw-rw---- 1 root root 0 Авг 30 20:02 columns_priv.MYD
-rw-rw---- 1 root root 1024 Авг 30 20:02 columns_priv.MYI
-rw-rw---- 1 root root 9088 Авг 30 20:02 db.frm
-rw-rw---- 1 root root 306 Авг 30 20:02 db.MYD
-rw-rw---- 1 root root 3072 Авг 30 20:02 db.MYI
-rw-rw---- 1 root root 8641 Авг 30 20:02 func.frm
-rw-rw---- 1 root root 0 Авг 30 20:02 func.MYD
-rw-rw---- 1 root root 1024 Авг 30 20:02 func.MYI
-rw-rw---- 1 root root 9064 Авг 30 20:02 host.frm
-rw-rw---- 1 root root 0 Авг 30 20:02 host.MYD
-rw-rw---- 1 root root 1024 Авг 30 20:02 host.MYI
-rw-rw---- 1 root root 8877 Авг 30 20:02 tables_priv.frm
-rw-rw---- 1 root root 0 Авг 30 20:02 tables_priv.MYD
-rw-rw---- 1 root root 1024 Авг 30 20:02 tables_priv.MYI
-rw-rw---- 1 root root 9806 Авг 30 20:02 user.frm
-rw-rw---- 1 root root 84 Авг 30 20:02 user.MYD
-rw-rw---- 1 root root 2048 Авг 30 20:02 user.MYI

ls -l /var/lib/mysql
-rw-rw---- 1 mysql daemon 25088 Авг 17 18:46 ib_arch_log_0000000000
-rw-rw---- 1 mysql daemon 10485760 Авг 30 20:33 ibdata1
-rw-rw---- 1 mysql daemon 5242880 Авг 30 20:33 ib_logfile0
-rw-rw---- 1 mysql daemon 5242880 Авг 17 18:46 ib_logfile1
-rw-rw---- 1 mysql daemon 1530 Авг 30 20:33 localhost.err
drwx------ 2 root root 4096 Авг 30 20:06 mysql/
drwx------ 2 root root 4096 Авг 30 20:02 test/
Может что-то надо сделать исполняемым?
30.08.2004 21:09
Мдя...
Смотрите, mysql если исполняется под пользователем mysql, то как он попадет в /var/lib/mysql/mysql или откроет host.frm ?

# chown -R mysql:daemon /var/lib/mysql

В результате все файлы, должны поменять владельца с root на mysql:
# ls -l /var/lib/mysql/mysql
# ls -l /var/lib/mysql

Все должно заработать.

31.08.2004 10:25
И действительно
Все заработало.Спасибо
Извините, только зарегистрированные пользователи могут публиковать сообщения в этом форуме.

Кликните здесь, чтобы войти