# Mysql Dienst startet nicht richtig

## Craven66

Hallo,

ich habe aktuell mysql 5.0.90-r2 auf meinem server installiert und die Datenbank mit emerge --config usw eingerichtet. Nun habe ich folgendes Problem, dass der mysql server mit /etc/init.d/mysql nicht starten will.

Commandozeile:

# /etc/init.d/mysql start

  Starting mysql ...

  Starting mysql ... (/etc/mysql/my.cnf)

MySQL NOT started (1)

Inhalt my.cnf:

user                     mysql

port                      3306

basedir                 /var/lib

datadir                 /var/lib/mysql

Inhalt mysql.err:

kein Eintrag

Inhalt mysqld.err:

kein Eintrag

Vermutung:

Ich denke es liegt am basedir Pfad. Gibt es eine Möglichkeit den genauen basedir Pfad herauszufinden? MySQL wurde als normales Package über Portage installiert.

Vielen Dank für eure Hilfe.

----------

## ChrisJumper

Warum ist denn deine my.cnf so klein/leer?

Bei mir hat diese Datei 147 Zeilen.

```
# /etc/init.d/mysql

Usage: mysql [options] stop | start | restart | describe | zap

Options: [dDsvl:ZChqv]

  -d, --debug                       set xtrace when running the script

  -Z, --dry-run                     show what would be done

  -s, --ifstarted                   only run commands when started

  -D, --nodeps                      ignore dependencies

  -l, --lockfd <arg>                fd of the exclusive lock from rc

  -h, --help                        Display this help output

  -C, --nocolor                     Disable color output

  -v, --verbose                     Run verbosely

  -q, --quiet                       Run quietly

```

Sonst Probiere einfach mal ein paar von den Parametern damit du vielleicht einen Fehler bekommst.

Wenn du mysql schon mit dem emerge --config Befehl eingerichtet hast, dann hast das mysql-howto bestimmt schon bemerkt.

Viel Erfolg

----------

## Craven66

Hallo Chris,

danke schonmal für die schnelle Rückmeldung und ich werde später die Optionen auf dem Server ausprobieren.

Ja meine Datei ist etwas größer, aber die Einstellungen sind hauptsächlich die Standards. Leider hat mir das how-to und die Logdateien für die Errors nicht mehr weiter geholfen, weshalb ich nun Hilfe bei den Profis im Forum suche.

Leider habe ich nirgends einen Eintrag gefunden welcher den Standard basedir Pfad nach einer neuen Installation angibt. Datadir ist hingegen bekannt und steht auch in der how-to.

Weist du zufällig wie der Standard basedir Pfad lautet oder mit welchem Befehl dieser zu überprüfen ist?

Und gibt es außer den Dateipfaden basedir und datadir noch einen speziellen Wert der angepasst werden muss, damit der Dienst startet?

Vielen Dank für die Hilfe.

----------

## ChrisJumper

Also bei mir ist das basedir noch so eingestellt.

```

basedir = /usr

```

Es verwundert mich nur das es bei dir nach einem normalen emerge und einrichten nicht klappt. Normalerweise wird auch eine default my.cnf erstellt. Ich werde das nachher mal auf einer anderen Rechner ausprobieren. Um zu sehen ob da ein anderes basedir gesetzt wird. Edit: Nein da habe ich auch basedir = /usr

 *Quote:*   

> Und gibt es außer den Dateipfaden basedir und datadir noch einen speziellen Wert der angepasst werden muss, damit der Dienst startet?

 

Normalerweise gibt es dann Fehlermeldungen die beklagen warum es nicht startet. Wenn der Port/Socket frei ist sollte es ohne Probleme starten.

Hast du eine ganz normale jungfräuliche mysql Installation?

(Dann sollte das so eigentlich alles klappen.)

Oder eine vorherige mit Besonderheiten (z.B. mehrere Instanzen usw)?

Wenn du dir nicht sicher bist schau mal in die Datei: /etc/conf.d/mysql

Oder vielleicht von einer älteren Version auf 5.0 aktualisiert? -> mysql-upgrading

 *Quote:*   

> Weist du zufällig wie der Standard basedir Pfad lautet oder mit welchem Befehl dieser zu überprüfen ist?
> 
> 

 

Nein, das habe ich noch nicht gefunden, aber es reicht ja eigentlich wenn der in den Konfigurationsdateien steht. ;)

Viel Erfolg ich hoffe ich konnte dir ein bisschen helfen.

----------

## Craven66

Wenn ich basedir = /usr einstelle findet er kein Directory.

Ich habe nun folgendes in der my.cnf eingestellt :

```

socket          =/var/run/mysqld/mysqld.sock

pid-file         =/var/run/mysqld/mysqld.pid

log-error      =/var/log/mysql/mysqld.err

basedir        =/usr/lib

datadir        =/data/mysql

skip-locking

```

Es hat sich am Ergebnis leider nichts geändert.

bzgl der Optionen:

Wenn ich /etc/init.d/mysql --dry-run start oder --verbose start ausführe meckert Gentoo mir den Command mit wrong arg an und in der Logdatei findet sich kein Eintrag.

----------

## Craven66

Ich habe noch etwas interessantes rausgefunden.

Ich habe den debug in conf.d aktiviert:

DEBUG=4

Nach erneutem Startversuch erhalte ich folgendes:

```

*Caching dependencies ...

dbg: >>> start ()

*Starting mysql ...

dbg: >>>get_slot_config ()

dbg: srv        0

dbg: srv_slot 0

dbg: srv_num

dbg: temp_eval  mysql_slot_0[@]

dbg: conf_d_parameters

dbg: MY_SUFFIX

dbg: chroot dir =>

dbg: niceness =>

dbg: basedir => /usr/lib

dbg: datadir => /data/mysql

dbg: pid-file  => /var/run/mysqld/mysqld.pid

dbg: socket  => /var/run/mysqld/mysqld.sock

dbg: Unamanged =>

dbg: <<< get_slot_config () ok

dbg: >>> checkconfig ("/data/mysql")

dbg: <<< checkconfig () ok

*Starting mysql (/etc/mysql/my.cnf)

Starting /usr/lib/mysql...

Detaching to start /usr/lib/mysql...done.

dbg:

dbg:

*MySQL NOT started (1)

dbg: <<< start ()

```

Ich hoffe diese Info bringt uns der Lösung etwas näher. Danke.

----------

## Raze

Das ist ne ganz frische Installation nehm ich an?

Du hast ganz sicher "emerge --config =dev-db/mysql-5.0.90-r2" ausgeführt? Und es gab auch sonst keine Fehler beim emerge?

Müsste ne 0815 my.cnf sein.

```
# /etc/mysql/my.cnf: The global mysql configuration file.

# $Header: /var/cvsroot/gentoo-x86/dev-db/mysql/files/my.cnf-4.1,v 1.4 2008/11/14 02:16:25 robbat2 Exp $

# The following options will be passed to all MySQL clients

[client]

#password                                       = your_password

port                                            = 3306

socket                                          = /var/run/mysqld/mysqld.sock

[mysql]

character-sets-dir=/usr/share/mysql/charsets

default-character-set=latin1

[mysqladmin]

character-sets-dir=/usr/share/mysql/charsets

default-character-set=latin1

[mysqlcheck]

character-sets-dir=/usr/share/mysql/charsets

default-character-set=latin1

[mysqldump]

character-sets-dir=/usr/share/mysql/charsets

default-character-set=latin1

[mysqlimport]

character-sets-dir=/usr/share/mysql/charsets

default-character-set=latin1

[mysqlshow]

character-sets-dir=/usr/share/mysql/charsets

default-character-set=latin1

[myisamchk]

character-sets-dir=/usr/share/mysql/charsets

[myisampack]

character-sets-dir=/usr/share/mysql/charsets

# use [safe_mysqld] with mysql-3

[mysqld_safe]

err-log                                         = /var/log/mysql/mysql.err

# add a section [mysqld-4.1] or [mysqld-5.0] for specific configurations

[mysqld]

character-set-server            = latin1

default-character-set           = latin1

user                                            = mysql

port                                            = 3306

socket                                          = /var/run/mysqld/mysqld.sock

pid-file                                        = /var/run/mysqld/mysqld.pid

log-error                                       = /var/log/mysql/mysqld.err

basedir                                         = /usr

datadir                                         = /var/lib/mysql

skip-locking

key_buffer                                      = 16M

max_allowed_packet                      = 1M

table_cache                             = 64

sort_buffer_size                        = 512K

net_buffer_length                       = 8K

read_buffer_size                        = 256K

read_rnd_buffer_size            = 512K

myisam_sort_buffer_size         = 8M

language                                        = /usr/share/mysql/english

# security:

# using "localhost" in connects uses sockets by default

# skip-networking

bind-address                            = 127.0.0.1

log-bin

server-id                                       = 1

# point the following paths to different dedicated disks

tmpdir                                          = /tmp/

#log-update                             = /path-to-dedicated-directory/hostname

# you need the debug USE flag enabled to use the following directives,

# if needed, uncomment them, start the server and issue

# #tail -f /tmp/mysqld.sql /tmp/mysqld.trace

# this will show you *exactly* what's happening in your server ;)

#log                                            = /tmp/mysqld.sql

#gdb

#debug                                          = d:t:i:o,/tmp/mysqld.trace

#one-thread

# uncomment the following directives if you are using BDB tables

#bdb_cache_size                         = 4M

#bdb_max_lock                           = 10000

# the following is the InnoDB configuration

# if you wish to disable innodb instead

# uncomment just the next line

#skip-innodb

#

# the rest of the innodb config follows:

# don't eat too much memory, we're trying to be safe on 64Mb boxes

# you might want to bump this up a bit on boxes with more RAM

innodb_buffer_pool_size = 16M

# this is the default, increase it if you have lots of tables

innodb_additional_mem_pool_size = 2M

#

# i'd like to use /var/lib/mysql/innodb, but that is seen as a database :-(

# and upstream wants things to be under /var/lib/mysql/, so that's the route

# we have to take for the moment

#innodb_data_home_dir           = /var/lib/mysql/

#innodb_log_arch_dir            = /var/lib/mysql/

#innodb_log_group_home_dir      = /var/lib/mysql/

# you may wish to change this size to be more suitable for your system

# the max is there to avoid run-away growth on your machine

innodb_data_file_path = ibdata1:10M:autoextend:max:128M

# we keep this at around 25% of of innodb_buffer_pool_size

# sensible values range from 1MB to (1/innodb_log_files_in_group*innodb_buffer_pool_size)

innodb_log_file_size = 5M

# this is the default, increase it if you have very large transactions going on

innodb_log_buffer_size = 8M

# this is the default and won't hurt you

# you shouldn't need to tweak it

set-variable = innodb_log_files_in_group=2

# see the innodb config docs, the other options are not always safe

innodb_flush_log_at_trx_commit = 1

innodb_lock_wait_timeout = 50

innodb_file_per_table

[mysqldump]

quick

max_allowed_packet                      = 16M

[mysql]

# uncomment the next directive if you are not familiar with SQL

#safe-updates

[isamchk]

key_buffer                                      = 20M

sort_buffer_size                        = 20M

read_buffer                             = 2M

write_buffer                            = 2M

[myisamchk]

key_buffer                                      = 20M

sort_buffer_size                        = 20M

read_buffer                             = 2M

write_buffer                            = 2M

[mysqlhotcopy]

interactive-timeout
```

----------

## Craven66

Genau Raze,

meine my.cnf sieht fast genauso aus nur mit Änderungen an basedir und datadir. Während des emerge --config sind keine Fehler aufgetreten und direkt in Verbindung damit wurde ein neues root Passwort gesetzt.

----------

## Finswimmer

Ich meine mich sehr dunkel daran zu erinnern, dass das Verzeichnis in /var/lib/mysql die falschen Rechte hat, bzw. nicht dem User mysql gehört.

So war es jedenfalls einmal, vor längerer Zeit, bei mir.

Das sollte zwar behoben sein, aber nachschauen kostet ja nichts  :Wink: 

drwxr-x---  5 mysql      mysql       147 Jan 31  2010 mysql

Tobi

----------

## Craven66

Hallo Fins,

ja diese Möglichkeit hatte ich auch schon ausgeschlossen. Rechte stimmen und own/group sind mysql mit den von dir angegebenen Zugriffsrechten. Hast du vielleicht noch einen anderen Tipp woran es liegen könnte?

----------

## ChrisJumper

Mir ist noch was eingefallen: mysqld_safe

```
# mysqld_safe --help

Usage: /usr/bin/mysqld_safe [OPTIONS]

  --no-defaults              Don't read the system defaults file

  --defaults-file=FILE       Use the specified defaults file

  --defaults-extra-file=FILE Also use defaults from the specified file

  --ledir=DIRECTORY          Look for mysqld in the specified directory

  --log-error=FILE           Log errors to the specified log file

  --open-files-limit=LIMIT   Limit the number of open files

  --core-file-size=LIMIT     Limit core files to the specified size

  --timezone=TZ              Set the system timezone

  --mysqld=FILE              Use the specified file as mysqld

  --mysqld-version=VERSION   Use "mysqld-VERSION" as mysqld

  --nice=NICE                Set the scheduling priority of mysqld

  --skip-kill-mysqld         Don't try to kill stray mysqld processes

```

Allerdings startet mysql dann von der Kommandozeile und lässt sich auch nicht mit strg + c beenden. Nur via SIGTERM oder SIGKILL  z.B. per top/htop...

Mach mal bitte ein 

```
# /etc/init.d/mysql --debug start
```

Die Einstellung des Debug-Levels war nicht wirklich Aufschlussreich. Der eben genannte Befehl sollte schon etwas mehr ausspucken ;)

Wenn du keine Database zu verlieren hast, würde ich auch mal schauen was noch auf deinem Rechner ist wenn du mysql entfernst und ob noch Dateien unter /var/lib/mysql/* liegen oder in /etc/mysql zu löschen/verschieben und neu zu emergen.

----------

## Finswimmer

Evtl hilft es auch, den Daemon manuell zu starten und sogar mit strace zum Debuggen.

----------

## Craven66

Die Datenbank wurde weggesichert und ein unmerge und neuer emerge auch schon durchgeführt.

Zu deinen Commands:

```

/etc/init.d/mysql --debug start

ERROR: wrong args (--debug)

Usage: mysql (start|stop|restart)

           mysql without arguments for full help

```

```

/usr/bin/mysqld_safe start

nohup: ignoring inputand ridirecting stderr to stdout

Starting mysql daemon with databases from /data/mysql

mysql_safe [32196]: started

STOPPING server from pid file /var/run/mysqld/mysqld.pid

mysql_safe [32202]:ended

```

Vielen Dank für die Hilfe.

----------

## Raze

Poste mal den Output von "emerge --info"

----------

## Craven66

Portage 2.1.8.3 (default/linux/x86/10.0/server, gcc-4.3.4, glibc-2.10.1-r1, 2.6.31-gentoo-r6 i686)

=================================================================

System uname: Linux-2.6.31-gentoo-r6-dmsb-i686-Intel-R-_Celeron-R-_CPU_2.00GHz-with-gentoo-1.12.6

Timestamp of tree: Wed, 04 Aug 2010 14:00:01 +0000

distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled]

ccache version 2.3 [disabled]

app-shells/bash:     4.0_p35

dev-java/java-config: 1.3.7, 2.0.30

dev-lang/python:     2.4.3-r4, 2.6.4

dev-util/ccache:     2.3

sys-apps/baselayout: 1.12.6

sys-apps/sandbox:    1.6-r2

sys-devel/autoconf:  2.13, 2.65

sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.2, 1.11.1

sys-devel/binutils:  2.16.1-r3

sys-devel/gcc:       3.3.6, 3.4.6-r1, 4.1.1-r3, 4.3.4

sys-devel/gcc-config: 1.4.1

sys-devel/libtool:   2.2.6b

virtual/os-headers:  2.4.19-r1, 2.6.17-r2

ACCEPT_KEYWORDS="x86"

ACCEPT_LICENSE="* -@EULA"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-O2 -mtune=i686 -fomit-frame-pointer"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/lib/X11/xkb /usr/share/config /usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/"

CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf /etc/java-config/vms/ /etc/sandbox.d /etc/terminfo"

CXXFLAGS="-O2 -mtune=i686 -fomit-frame-pointer"

DISTDIR="/usr/portage/distfiles"

FEATURES="assume-digests buildpkg distlocks fixpackages news parallel-fetch protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans"

GENTOO_MIRRORS="http://pandemonium.tiscali.de/pub/gentoo/ ftp://pandemonium.tiscali.de/pub/gentoo/ http://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/ ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo ftp://ftp.easynet.nl/mirror/gentoo/ ftp://gentoo.inode.at/source/ http://gentoo.inode.at/ ftp://gentoo.blueyonder.co.uk/mirrors/gentoo ftp://mir.zyrianes.net/gentoo/ http://ftp.easynet.nl/mirror/gentoo/"

LDFLAGS="-Wl,-O1 -Wl,--as-needed"

MAKEOPTS="-j5"

PKGDIR="/usr/portage/packages"

PORTAGE_CONFIGROOT="/"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/data/portage"

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

USE="acl berkdb bzip2 cli cracklib crypt cups cxx dri exiscan foomaticdb fortran gd gdbm gpm iconv ldap modules mudflap ncurses nls nptl nptlonly openmp pam pcre perl pppd python readline reflection samba session snmp softquota spl ssl sysfs unicode x86 xml xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation re

Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, LC_ALL, LINGUAS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY

----------

## Craven66

So ich habe das Problem mit dem Startscript mit dem mysqlmanager umgangen. Nun startet der Dienst. Leider zeigt mir der mysqlmanager nicht alle Datenbanken an. Vielen Dank für eure Hilfe.

----------

