• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

MYSQL-Problem

poiuz

Member
Guten Abend,

seit einigen Stunden versuche ich mysql an´s Laufen zu bringen.
Aber ohne Erfolg.

Einige Daten:
Kernel: Linux 3.1.0-1.1-desktop i686
Distribution: Balsam Professional 12.1 (i586)
KDE: 4.7.2 (4.7.2) "release 5".

Fehlermeldung in mysql.log:
120609 18:35:10 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
/usr/sbin/mysqld: File './mysql-bin.~rec~' not found (Errcode: 13)
120609 18:35:10 [ERROR] MYSQL_BIN_LOG::eek:pen_purge_index_file failed to open register file.
120609 18:35:10 [ERROR] MYSQL_BIN_LOG::eek:pen_index_file failed to sync the index file.
120609 18:35:10 [ERROR] Aborting

120609 18:35:10 [Note] /usr/sbin/mysqld: Shutdown complete
120609 18:35:10 mysqld_safe mysqld from pid file /var/lib/mysql/linux-h0o3.pid ended

Fehlermeldung in error_log:

DBI connect('scan_jobs:localhost','root',...) failed: Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2) at /srv/www/cgi-bin/perl_programme/firmen_suchen.pl line 1441
[Sat Jun 09 18:35:55 2012] [error] [client ::1] [Sat Jun 9 18:35:55 2012] firmen_suchen.pl: Died at /srv/www/cgi-bin/perl_programme/firmen_suchen.pl line 1447.

Zum Verständnis:
line 1441 = my $dbh = DBI->connect("dbi:mysql:$db:$host", "$db_user", "$db_password",
line 1447 = print "<br><b>DATENBANK IST NICHT OFFEN<b><br>"; die;

...und wenn ich versuche mich bei phpMyAdmin anzumelden erscheint dort folgende Fehlermeldung:
#2002 Die Anmeldung am MySQL-Server ist fehlgeschlagen.

Ich bitte um Hilfe

Poiuz
 

spoensche

Moderator
Teammitglied
poiuz schrieb:
Fehlermeldung in mysql.log:
120609 18:35:10 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
/usr/sbin/mysqld: File './mysql-bin.~rec~' not found (Errcode: 13)
120609 18:35:10 [ERROR] MYSQL_BIN_LOG::eek:pen_purge_index_file failed to open register file.
120609 18:35:10 [ERROR] MYSQL_BIN_LOG::eek:pen_index_file failed to sync the index file.
120609 18:35:10 [ERROR] Aborting

120609 18:35:10 [Note] /usr/sbin/mysqld: Shutdown complete
120609 18:35:10 mysqld_safe mysqld from pid file /var/lib/mysql/linux-h0o3.pid ended
Poiuz

MySQL kann die Datei mysql-bin.~rec~ nicht finden und startet deshalb nicht. Die Datei ist aber notwendig, weil du die binären Logs eingeschaltet hast. Die Fehlermeldung von PHPMyAdmin erfolgt, weil er keine Verbindung zum Datenbankserver aufbauen kann.

Wie startest du den MySQL- Server? Welchen Pfad hast du für die binären Logs in deiner my.cnf angegeben?
 
OP
P

poiuz

Member
...danke @spoensche, daß Du Dich meines Problems angenommen hast.

Wie startest du den MySQL- Server? Welchen Pfad hast du für die binären Logs in deiner my.cnf angegeben?

Beide Fragen kann ich nicht beantworten, da ich einfach zu wenig von Linux weiß.
Asche auf mein Haupt!

Trotzdem bitte ich um weitere Hilfe.

Poiuz
 

framp

Moderator
Teammitglied
poiuz schrieb:
...
Wie startest du den MySQL- Server? Welchen Pfad hast du für die binären Logs in deiner my.cnf angegeben?

Beide Fragen kann ich nicht beantworten, da ich einfach zu wenig von Linux weiß.
Asche auf mein Haupt!

Trotzdem bitte ich um weitere Hilfe.
Es kann keiner auf Dein System zugeifen. D.h. Du musst mit nachgefragten Infos rausruecken - ansonsten kann Dir keiner helfen...

Also oeffne die Datei my.cnf mit einem Editor und siehe nach was dort fuer die binaeren Logs steht und poste den Pfad. Oder benutze alternativ einfach cat in der Konsole.
 
OP
P

poiuz

Member
Also oeffne die Datei my.cnf mit einem Editor und siehe nach was dort fuer die binaeren Logs steht und poste den Pfad.
...könnte das der Pfad sein?
Code:
# binary logging is required for replication
log-bin=mysql-bin
Poiuz
 

spoensche

Moderator
Teammitglied
Das ist nur Name der Datei. I.d.R liegen die binären Logs unter /var/log/mysql. Du wirst doch wissen, ob dein MySQL beim Systemstart autom. startet oder ob du es manuell startest.

Hast du MySQL selber kompiliert oder per Paketmanager installiert? Poste mal bitte die vollständige my.cnf.
 
OP
P

poiuz

Member
Poste mal bitte die vollständige my.cnf.

Hier ist die my.cnf:
Code:
# Example MySQL config file for medium systems.
#
# This is for a system with little memory (32M - 64M) where MySQL plays
# an important part, or systems up to 128M where MySQL is used together with
# other programs (such as a web server)
#
# MySQL programs look for option files in a set of
# locations which depend on the deployment platform.
# You can copy this option file to one of those
# locations. For information about these locations, see:
# http://dev.mysql.com/doc/mysql/en/option-files.html
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.

# The following options will be passed to all MySQL clients
[client]
#password	= your_password
port		= 3306
socket		= /var/run/mysql/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port		= 3306
socket		= /var/run/mysql/mysql.sock
# Change following line if you want to store your database elsewhere
datadir	= /var/lib/mysql
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
# 
#skip-networking

# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin

# binary logging format - mixed recommended
binlog_format=mixed

# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id	= 1

# Replication Slave (comment out master section to use this)
#
# To configure this host as a replication slave, you can choose between
# two methods :
#
# 1) Use the CHANGE MASTER TO command (fully described in our manual) -
#    the syntax is:
#
#    CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
#    MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
#
#    where you replace <host>, <user>, <password> by quoted strings and
#    <port> by the master's port number (3306 by default).
#
#    Example:
#
#    CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
#    MASTER_USER='joe', MASTER_PASSWORD='secret';
#
# OR
#
# 2) Set the variables below. However, in case you choose this method, then
#    start replication for the first time (even unsuccessfully, for example
#    if you mistyped the password in master-password and the slave fails to
#    connect), the slave will create a master.info file, and any later
#    change in this file to the variables' values below will be ignored and
#    overridden by the content of the master.info file, unless you shutdown
#    the slave server, delete master.info and restart the slaver server.
#    For that reason, you may want to leave the lines below untouched
#    (commented) and instead use CHANGE MASTER TO (see above)
#
# required unique id between 2 and 2^32 - 1
# (and different from the master)
# defaults to 2 if master-host is set
# but will not function as a slave if omitted
#server-id       = 2
#
# The replication master for this slave - required
#master-host     =   <hostname>
#
# The username the slave will use for authentication when connecting
# to the master - required
#master-user     =   <username>
#
# The password the slave will authenticate with when connecting to
# the master - required
#master-password =   <password>
#
# The port the master is listening on.
# optional - defaults to 3306
#master-port     =  <port>
#
# binary logging - not required for slaves, but recommended
#log-bin=mysql-bin

# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/lib/mysql
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

# The safe_mysqld script
[safe_mysqld]
log-error	= /var/log/mysql/mysqld.log
socket		= /var/run/mysql/mysql.sock

[mysqldump]
socket		= /var/run/mysql/mysql.sock
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
log        = /var/log/mysqld_multi.log
# user       = multi_admin
# password   = secret

# If you want to use mysqld_multi uncomment 1 or more mysqld sections
# below or add your own ones.

# WARNING
# --------
# If you uncomment mysqld1 than make absolutely sure, that database mysql,
# configured above, is not started.  This may result in corrupted data!
# [mysqld1]
# port       = 3306
# datadir    = /var/lib/mysql
# pid-file   = /var/lib/mysql/mysqld.pid
# socket     = /var/lib/mysql/mysql.sock
# user       = mysql

# [mysqld2]
# port       = 3307
# datadir    = /var/lib/mysql-databases/mysqld2
# pid-file   = /var/lib/mysql-databases/mysqld2/mysql.pid
# socket     = /var/lib/mysql-databases/mysqld2/mysql.sock
# user       = mysql

# [mysqld3]
# port       = 3308
# datadir    = /var/lib/mysql-databases/mysqld3
# pid-file   = /var/lib/mysql-databases/mysqld3/mysql.pid
# socket     = /var/lib/mysql-databases/mysqld3/mysql.sock
# user       = mysql

# [mysqld6]
# port       = 3309
# datadir    = /var/lib/mysql-databases/mysqld6
# pid-file   = /var/lib/mysql-databases/mysqld6/mysql.pid
# socket     = /var/lib/mysql-databases/mysqld6/mysql.sock
# user       = mysql

Poiuz
 

spoensche

Moderator
Teammitglied
Danke, die Ursache deines Problems ist der fehlende Pfad bei der Definition von bin-log. Ohne die Pfadangabe sagst du MySQL, dass es das aktuelle Working Directory verwenden soll.
Ändere das mal in
Code:
log_bin = /var/log/mysql/mysql-bin
log_bin_index = /var/log/mysql/mysql-bin.index
 
OP
P

poiuz

Member
Danke für die Antwort.

...Meinst Du: ändern in my.cnf?


Code:
log_bin = /var/log/mysql/mysql-bin
log_bin_index = /var/log/mysql/mysql-bin.index


Ich habe in my.cnf nach
Code:
 log_bin
gesucht, - nicht gefunden - dann
Code:
log-bin =   /var/log/mysql/mysql-bin
gesetzt.
Weder
Code:
 log_bin_index
noch
Code:
 log-bin-index
gefunden.

Nach Änderung (was möglich war) war die fehlermeldung in error_log die gleiche.

Poiuz
 

spoensche

Moderator
Teammitglied
Ja ich meinte die my.cnf. Welche MySQL -Version verwendest du?

Ich bin gerade über einen Bug aus der 11.4 gestolpert, der die gleiche Fehlermeldung verursacht.

Siehe: http://lists.opensuse.org/archive/opensuse/2011-04/msg00583.html

Zwei Mails weiter, http://lists.opensuse.org/archive/opensuse/2011-04/msg00612.html, gibt es einen Workaround.
 
OP
P

poiuz

Member
...ich müsste doch an die Version kommen, wenn ich in der Konsole eingebe:
Code:
mysql -v

Dann kommt aber als Anwort nur:
Code:
linux-h0o3:/home/fhf # mysql -v
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2)
Oder:
Code:
linux-h0o3:/home/fhf # mysqlshow
mysqlshow: Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2)
[/code] Wie kann ich sonst noch an die Version kommen?

Da ich nur Linux-Anwender - kein "Wissender" bin (wie man an meinen dämlichen Fragen schon gemerkt hat), weiß ich mir selbst garnicht zu helfen.
Darum Danke für jeden Strohhalm.

Poiuz
 

TomcatMJ

Guru
Mit
Code:
rpm -qa | grep mysql
in einer Konsole als root ausgeführt dürftest du auch die Version herausbekommen beziehungsweise die Versionsnummer des per Paketmanager installi8erten MySQL Serverpakets.
 
OP
P

poiuz

Member
...danke
Code:
linux-h0o3:/home/fhf/IBJts/lynx_unix_linux/IBJts # rpm -qa | grep mysql
libreoffice-base-drivers-mysql-3.4.2.6-4.2.2.i586
libqt4-sql-mysql-4.7.4-19.2.2.i586
mysql-community-server-5.5.16-3.2.2.i586
perl-DBD-mysql-4.020-2.1.4.i586
libmysqld18-5.5.16-3.2.2.i586
php5-mysql-5.3.8-4.15.2.i586
libmysqlclient18-5.5.16-3.2.2.i586
mysql-community-server-client-5.5.16-3.2.2.i586
Poiuz
 
OP
P

poiuz

Member
...hier das Ergebnis von mysql --version

Code:
linux-h0o3:/home/fhf/IBJts/lynx_unix_linux/IBJts # mysql --version
mysql  Ver 14.14 Distrib 5.5.16, for Linux (i686) using readline 6.2
 

panamajo

Guru
poiuz schrieb:
...hier das Ergebnis von mysql --version

Code:
linux-h0o3:/home/fhf/IBJts/lynx_unix_linux/IBJts # mysql --version
mysql  Ver 14.14 Distrib 5.5.16, for Linux (i686) using readline 6.2
Wie hast du mySQL installiert? Die openSuSE Version wäre IMHO 5.5.23
 

spoensche

Moderator
Teammitglied
Ich frage mich gerade, wo du die 5.5.16 für SuSE 12.1 her hast. Wie panamajo schon sagte ist die MySQL 5.5.23 die offizielle aus dem Repo. Wie hast du MySQL installiert?
 
Oben