LINUX.ORG.RU
ФорумAdmin

установка mysql


0

0

начну сначала:
после загрузки во время выдачи логина пишется:
STOPPING server from pid file /var/run/mysql.pid mysql ended
этого файла в системе не существует!
при попытке запустить мускул а так-же соединиться средствами пхп
выдает:
mysql_connect(): Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2)
директория /var/run/mysql - пустая
что произошло не знаю.
рассмотрю все советы вплоть до удаления мускуля и установки(компиляции) нового.
прошу вникнуть!

anonymous

А чего тут вникать?
Если нет mysql.pid, значит сервер почти наверняка не стартовал.
Разбирайтесь со стартом сервера mysql, прежде чем коннектиться к нему клиентом.

archont ★★★
()

а как это его запустить?
я как понял надо запускать mysqld
просто без параметров он не запускается
старта в мане не нашел,
так как?

anonymous
()

добавлю что я делаю запуск от рута.
может для рута какие-то особенности?

anonymous
()

050611 17:38:36 Warning: Can't create test file /var/lib/mysql/zena.lower-test
/usr/libexec/mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13)
050611 17:38:36 Aborting

050611 17:38:36 /usr/libexec/mysqld: Shutdown Complete
это если я запускаю не от рута

Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
050611 17:38:10 Aborting

050611 17:38:10 /usr/libexec/mysqld: Shutdown Complete
это если от рута

ps
я и рут и не рут добавил в группу mysql!

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

Как ты его запускаешь, и как ты его поставил? Если из rpm-ки, то наверняка есть стартовый скрипт, запусти его и посмотри что скажет. Предположу что запускается он # /etc/init.d/mysql start

И еще - есть подозрения что ты намудрил с правами на каталоги, которые он использует.

Vad_S
()

я запускаю mysqld
как я понял сервер не запущен.
mysqld - это сервер
mysql - это клиент
устанавливал не из rpm
а так как установился с загрузочного диска.
видать криво установился.
init.d у меня в системе нету.
mysql start так-же не запускается
ERROR 2002: Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2)
mysql.sock отсутствует
с директория ми ничего не мудрил кроме добавления в группу mysql.
не рут выдает:
050611 18:02:58 Warning: Can't create test file /var/lib/mysql/zena.lower-test
050611 18:02:58 Can't start server : Bind on unix socket: Permission denied
050611 18:02:58 Do you already have another mysqld server running on socket: /var/run/mysql/mysql.sock ?
050611 18:02:58 Aborting

050611 18:02:58 /usr/libexec/mysqld: Shutdown Complete

/var/run/mysql - пуст

рут выдает то что я писал выше.
так что переустановить мускуль?
или есть еще идеи?

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

Так или иначе где-то в /etc стартовый скрипт должен быть:) Что за дистрибутив?

Вот скрипт, который у меня запускает mysql
----------------------------
#!/bin/sh
# Copyright (c) 1995-2002 SuSE Linux AG Nuernberg, Germany.
#
# Author: Lenz Grimmer <feedback@suse.de>
#
# /etc/init.d/mysql
#
# and its symbolic link
#
# /usr/sbin/rcmysql
#
### BEGIN INIT INFO
# Provides: mysql
# Required-Start: $network $remote_fs
# Required-Stop:
# Default-Start: 2 3 5
# Default-Stop:
# Description: Start the MySQL database server
### END INIT INFO

# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_failed <num> set local and overall rc status to <num>
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status
. /etc/rc.status

# First reset status of this service
rc_reset

# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.

# Test, if mysqld or mysql-max actually exist
unset MYSQLD
if test -x /usr/sbin/mysqld-max
then
MYSQLD=/usr/sbin/mysqld-max
elif test -x /usr/sbin/mysqld
then
MYSQLD=/usr/sbin/mysqld
fi
test "$MYSQLD" || { echo "Nor /usr/sbin/mysqld nor /usr/sbin/mysqld-max
exists"; rc_failed 5; rc_status -v; rc_exit; }

# The following section has been taken from
# the original MySQL init script
basedir=/usr
datadir=/var/lib/mysql
mysql_daemon_user=mysql
pid_file=/var/lib/mysql/mysqld.pid
socket=/var/lib/mysql/mysql.sock
MYADMIN=/usr/bin/mysqladmin

if test -z "$basedir"
then
basedir=/usr
bindir=/usr/bin
else
bindir="$basedir/bin"
fi

if test -z "$pid_file"
then
pid_file=$datadir/`/bin/hostname`.pid
else
case "$pid_file" in
/* ) ;;
* ) pid_file="$datadir/$pid_file" ;;
esac
fi

mode=$1 # start or stop

parse_arguments() {
for arg do
case "$arg" in
--basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
--datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
--pid-file=*) pid_file=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
--socket=*) socket=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
esac
done
}

# Get arguments from the my.cnf file, groups [mysqld] and [mysql_server]
if test -x ./bin/my_print_defaults
then
print_defaults="./bin/my_print_defaults"
elif test -x $bindir/my_print_defaults
then
print_defaults="$bindir/my_print_defaults"
elif test -x $bindir/mysql_print_defaults
then
print_defaults="$bindir/mysql_print_defaults"
else
# Try to find basedir in /etc/my.cnf
conf=/etc/my.cnf
print_defaults=
if test -r $conf
then
subpat='^[^=]*basedir[^=]*=\(.*\)$'
dirs=`sed -e "/$subpat/!d" -e 's//\1/' $conf`
for d in $dirs
do
d=`echo $d | sed -e 's/[ ]//g'`
if test -x "$d/bin/my_print_defaults"
then
print_defaults="$d/bin/my_print_defaults"
break
fi
if test -x "$d/bin/mysql_print_defaults"
then
print_defaults="$d/bin/mysql_print_defaults"
break
fi
done
fi

# Hope it's in the PATH ... but I doubt it
test -z "$print_defaults" && print_defaults="my_print_defaults"
fi

parse_arguments `$print_defaults $defaults mysqld mysql_server`

# Safeguard (relative paths, core dumps..)
cd $basedir

case "$1" in
start)
# exit gracefully, if we are already running
checkproc $MYSQLD && echo -n "Starting service MySQL" && \
rc_status -v && rc_exit

# Test, if safe_mysqld actually exists
SAFE_MYSQLD=/usr/bin/mysqld_safe
test -x $SAFE_MYSQLD || { echo "$SAFE_MYSQLD does not exist"; rc
_failed 5; rc_status -v; rc_exit; }

# We assume a fresh install if the directory $datadir/mysql
# does not exist and create the privilege database
if test ! -d $datadir/mysql ; then
echo "Creating MySQL privilege database and starting MyS
QL..."
mysql_install_db --user=$mysql_daemon_user || rc_failed

# Fix ownerships and permissions for $datadir
chmod 755 $datadir
chown -R $mysql_daemon_user $datadir
else
echo "Starting service MySQL"
fi

$SAFE_MYSQLD \
--user=$mysql_daemon_user \
--pid-file=$pid_file \
--socket=$socket \
--datadir=$datadir &>/dev/null &

for((i=0; i<50; i++)); do
sleep 0.2
test -S $socket && i='' && break
done

test -z "$i" || rc_failed

# Rmember status and be verbose
rc_status -v
;;

stop)
echo "Shutting down service mysql"
killproc -p $pid_file -TERM $MYSQLD

# Remember status and be verbose
rc_status -v
;;

try-restart)
## Stop the service and if this succeeds (i.e. the
## service was running before), start it again.
## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
$0 status >/dev/null && $0 restart

# Remember status and be quiet
rc_status
;;

restart|force-reload)
echo "Restarting service MySQL"
$0 stop
$0 start

rc_status
;;

reload)
echo -n "Reloading service MySQL"
killproc -p $pid_file -HUP $MYSQLD
touch $pid_file
rc_status -v
;;

check|status)
echo -n "Checking for service MySQL: "
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.

# Status has a slightly different for the status command:
# 0 - service running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running

# NOTE: checkproc returns LSB compliant status values.
checkproc $MYSQLD
rc_status -v
;;

*)
echo "Usage: $0 {start|stop|status|reload|restart|try-restart|force-reload}"
exit 1
;;
esac
rc_exit

----------------------------

Vad_S
()

да я нашел /etc/rc.d/rc.mysqld
выполнил но мало что поменялось
он выполнился и ничего мне не сообщил.
/var/run/mysql по прежнему пуст.
дистрибутив slackware 10.1

anonymous
()
Ответ на: комментарий от Vad_S

А как дела с правами на разные каталоги?
Для проверки поставь 0777 :) на все, которые юзает мыскуль. И на родителей побольше прав дай. Потом посмотри, что в них появилось и кто это создал.

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

Все права ему тоже могут не понравится:) Я бы на его месте не доверял каталогам, которые может менять кто попало.

Давно это было, не помню точно, но вроде в install-guide должны быть прописаны права, где какие нужны.

Vad_S
()
Ответ на: комментарий от anonymous

Ты журнал ошибок смотрел? Что там? Он обычно в /var/lib/mysql находится.

simba
()
Ответ на: комментарий от Vad_S

>Все права ему тоже могут не понравится:) Я бы на его месте не доверял каталогам, которые может менять кто попало.
Да, бывает такое. Некоторым не нравится даже то, что их конфиг кто-то может прочитать. :)

А по теме: давно пора найти логи и почитать их. :)

RuMoHoR
()

вот логи.
мне они ни о чем не говорят.
если кому-то они о чем-то говорят то просьба сообщить.
mysql.host где должен быть?

050604 20:13:39 mysqld started
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
050604 20:13:39 InnoDB: Setting file ./ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
050604 20:13:40 InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
050604 20:13:40 InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
050604 20:13:41 InnoDB: Started
050604 20:13:41 Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist
050604 20:13:41 Aborting

050604 20:13:41 InnoDB: Starting shutdown...
050604 20:13:43 InnoDB: Shutdown completed
050604 20:13:43 /usr/libexec/mysqld: Shutdown Complete

050604 20:13:43 mysqld ended

050604 23:58:36 mysqld started
050604 23:58:37 InnoDB: Started
050604 23:58:37 Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist
050604 23:58:37 Aborting

050604 23:58:37 InnoDB: Starting shutdown...
050604 23:58:39 InnoDB: Shutdown completed
050604 23:58:39 /usr/libexec/mysqld: Shutdown Complete

050604 23:58:39 mysqld ended

..................

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

Подсказываю секретный метод решения разных проблем:) 
Берешь строку с ошибкой, в данном случае 
Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist 

И скармливаешь всем поисковикам подряд. Оказывается у google есть 11 страниц таких проблем -
http://www.google.ru/search?q=Fatal+error:+Can%27t+open+privilege+tables:+Table+
%27mysql.host%27+doesn%27t+exist+&hl=ru&lr=&client=firefox-a&rls
=org.mozilla:en-US:official&start=0&sa=N

Если кратенько, то рекомендуют поправить my.cnf на предмет каталогов где его хозяйство лежит (я бы вообще новые задал, а потом таблицы там заново создал инсталяционным скриптом), и еще советуют перезапустить скрипт
/usr/bin/mysql_install_db
чтобы он переустановил свои таблицы.



правда это про виндусовый порт, но смысл сохраняется
------------------
Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist

These messages occur when the MySQL server cannot find the mysql privileges database or other critical files. This error is often encountered when the MySQL base or data directories are installed in different locations than the default locations (C:\mysql and C:\mysql\data, respectively).

If you have installed MySQL to a directory other than C:\mysql you need to ensure that the MySQL server is aware of this through the use of a configuration (my.ini) file. The my.ini file needs to be located in your Windows directory, typically located at C:\WinNT or C:\WINDOWS. You can determine its exact location from the value of the WINDIR environment variable by issuing the following command from the command prompt:

C:\> echo %WINDIR%

An option file can be created and modified with any text editor, such as the Notepad program. For example, if MySQL is installed at E:\mysql and the data directory is located at D:\MySQLdata, you can create the option file and set up a [mysqld] section to specify values for the basedir and datadir parameters

[mysqld]
# set basedir to your installation path
basedir=E:/mysql
# set datadir to the location of your data directory
datadir=D:/MySQLdata

Note that Windows pathnames are specified in option files using forward slashes rather than backslashes. If you do use backslashes, you must double them:

[mysqld]
# set basedir to your installation path
basedir=C:\\Program Files\\mysql
# set datadir to the location of your data directory
datadir=D:\\MySQLdata
------------------

Если поможет - тоже пиши

Vad_S
()

первым делом от рута: useradd mysql && groupadd mysql

потом редактируешь passwd, в пассвд прописываешь хому для mysql (/var/lib/mysql) и добавляешь юзера mysql в группу mysql.

чмодишь на 700 /var/lib/mysql и човном на нього :)) chown -R mysql.mysql /var/lib/mysql

потом su - mysql

дальше mysql_install_db

и последнее: mysqladmin -p 'yoursecretpassword'

после этого db готова к использованию: mysql -p .

надеюсь скуль знаешь, т.е. таблицу создать сможешь...

вроде все правильно, но проверить не могу - ибо нет рабочего бокса, щас в винде.

у самого точно такие же проблемы были...

З.Ы. если какие-то траблы, то заново процесс пустить можно посредством выполнения rm -rf /var/lib/mysql/* ну и дальше с момента su - mysql.

удачи :))

gr_buza ★★★★
()

всем спасибо вроде с горем попалам работает!
у меня теперь другой вопрос о связи пхп и мускуль в линух.
вот:
<html>
<body>
<?
mysql_connect();
mysql_query( "create database _all_" );
mysql_select_db( "_all_" );
mysql_query( "create table proba( id longint )" );
mysql_query( "insert into proba values( '1' )" );
$res = mysql_query( "select * from proba" );
while( $row = mysql_fetch_array( $res ) )
{
echo "$row[0]";
}
?>
</body>
</html>
вот что выдается:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/proba/index.php on line 10

в вынь этот скрипт срабатыавл кажись а вот в линух не пашет.
подправте если можно.

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

Я в php ничего не понимаю, но во-первых google рулит - там на твой warning куча рецептов, во-вторых допиши к своим query соответственно

or die(mysql_error());

чтобы видеть ошибку


В-третьих подключись обычным клиентом и поисполняй свои запросы без PHP

И вообще лучше наверное в программерском форуме это спросить:)

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

да гугл рулит, кое -что нашел, но там дают много ссылок на различные проблемы, не могу разобраться ошибка была в коннекте в базу данных: Access denied for user: '@localhost' to database '_all_' как лечить?

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

Запрещен доступ к базе данных _all_ для пользователя 'хз_кто_такой с хоста localhost'

Еще что-нибудь перевести?:)))

Сделай юзера в mysql, разреши ему подключатться к этой базе с localhost и GRANT ему нужные права

Vad_S
()

честное слово не могу понять!

мускуль:
grant all privileges on *.* to al@localhost identified by password '1234567890123456';
flush privileges;

пхп:
mysql_connect( "localhost", "al", "1234567890123456" ) || die( mysql_error() );

результат:
Warning: mysql_connect(): Access denied for user: 'al@localhost' (Using password: YES) in /var/www/proba/index.php on line 4
Access denied for user: 'al@localhost' (Using password: YES)

может еще есть какой стабильный рецепт?

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

пишет гость&#8470;65537

попробуй приконнектиться к мускулю такой командой mysql -u root -p дальше он попросит пароль рута - введи его...

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