Bei einer brandneuen Kubuntu 14.04-Installation lief ich sudo aptitude install mysql-server-core-5.6
. Die Installation konnte aufgrund der Abhängigkeiten einiger KDE-Pakete von nicht abgeschlossen werden mysql-server-core-5.5
, die ersetzt worden wären. Wenn ich jetzt starte, sudo aptitude install mysql-server-5.5
erhalte ich diesen Fehler, nachdem ich ein Passwort angegeben habe:
Configuring mysql-server-5.5
Unable to set password for the MySQL "root" user
An error occurred while setting the password for the MySQL administrative user. This may have happened
because the account already has a password, or because of a communication problem with the MySQL server.
You should check the account's password after the package installation.
Please read the /usr/share/doc/mysql-server-5.5/README.Debian file for more information.
Ich habe zwar gelesen, /usr/share/doc/mysql-server-5.5/README.Debian
aber es gab nichts Relevantes für meine Situation. Das MySQL-Protokoll hilft:
$ tail /var/log/mysql/error.log
140818 10:17:16 InnoDB: Completed initialization of buffer pool
140818 10:17:16 InnoDB: highest supported file format is Barracuda.
140818 10:17:16 InnoDB: Waiting for the background threads to start
140818 10:17:17 InnoDB: 5.5.38 started; log sequence number 1595675
140818 10:17:17 [ERROR] /usr/sbin/mysqld: unknown option '--explicit_defaults_for_timestamp'
140818 10:17:17 [ERROR] Aborting
140818 10:17:17 InnoDB: Starting shutdown...
140818 10:17:18 InnoDB: Shutdown completed; log sequence number 1595675
140818 10:17:18 [Note]
Ich kann jedoch nicht finden, in welchem Skript die --explicit_defaults_for_timestamp
Option eingestellt ist. Ich habe versucht, mysql
ohne zu starten service
, um die --explicit_defaults_for_timestamp
Option zu vermeiden, aber es wird immer noch nicht gestartet:
$ ps aux | grep mysql
dotanco+ 25458 0.0 0.0 11748 928 pts/4 S+ 10:30 0:00 grep --color=auto mysql
$ sudo mysqld_safe --skip-grant-tables &
[1] 25470
140818 10:30:54 mysqld_safe Can't log to error log and syslog at the same time. Remove all --log-error configuration options for --syslog to take effect.
140818 10:30:54 mysqld_safe Logging to '/var/log/mysql/error.log'.
140818 10:30:54 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
140818 10:30:57 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
[1]+ Done sudo mysqld_safe --skip-grant-tables
$ ps aux | grep mysql
dotanco+ 25810 0.0 0.0 11748 932 pts/4 S+ 10:31 0:00 grep --color=auto mysql
Der Fehler sagt mir zu Remove all --log-error configuration options
. Ich habe daher /etc/mysql/my.cnf
die folgende Zeile bearbeitet und auskommentiert:
log-error = /var/log/mysql/error.log
Jetzt bekomme ich keine Fehlermeldung, kann mich aber trotzdem nicht anmelden:
$ sudo mysqld_safe --skip-grant-tables &
[1] 26558
140818 10:34:37 mysqld_safe Logging to syslog.
140818 10:34:38 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
140818 10:34:40 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
[1]+ Done sudo mysqld_safe --skip-grant-tables
$ mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Was könnte das Problem sein? Wie soll ich vorgehen?
BEARBEITEN
Ich habe jetzt die explicit-defaults-for-timestamp
Zeile in auskommentiert my.cnf
. Hier ist die gesamte Datei abzüglich der Header-Kommentare:
$ cat /etc/mysql/my.cnf
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
#explicit_defaults_for_timestamp
bind-address = 127.0.0.1
#log-error = /var/log/mysql/error.log
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
!includedir /etc/mysql/conf.d/
Folgendes passiert, wenn ich versuche, MySQL auszuführen:
$ sudo echo 1 >> /var/log/mysql/error.log
$ tail /var/log/mysql/error.log
140818 10:31:49 InnoDB: Waiting for the background threads to start
140818 10:31:50 InnoDB: 5.5.38 started; log sequence number 1595675
140818 10:31:50 [ERROR] /usr/sbin/mysqld: unknown option '--explicit_defaults_for_timestamp'
140818 10:31:50 [ERROR] Aborting
140818 10:31:50 InnoDB: Starting shutdown...
140818 10:31:51 InnoDB: Shutdown completed; log sequence number 1595675
140818 10:31:51 [Note]
140818 10:31:51 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
1
$ sudo service mysql start
start: Job failed to start
$ tail /var/log/mysql/error.log
140818 10:31:49 InnoDB: Waiting for the background threads to start
140818 10:31:50 InnoDB: 5.5.38 started; log sequence number 1595675
140818 10:31:50 [ERROR] /usr/sbin/mysqld: unknown option '--explicit_defaults_for_timestamp'
140818 10:31:50 [ERROR] Aborting
140818 10:31:50 InnoDB: Starting shutdown...
140818 10:31:51 InnoDB: Shutdown completed; log sequence number 1595675
140818 10:31:51 [Note]
140818 10:31:51 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
1
$ grep explicit_defaults_for_timestamp /etc/mysql/my.cnf /etc/init.d/mysql /etc/default/mysql
/etc/mysql/my.cnf:#explicit_defaults_for_timestamp
grep: /etc/default/mysql: No such file or directory
Wie zu sehen ist, wird nichts Neues in die Protokolle geschrieben, und die explicit_defaults_for_timestamp
Option ist nirgendwo festgelegt.
Ich konnte neu installieren, mysql-server-core-5.5
aber das hat das Problem nicht behoben:
$ sudo aptitude reinstall mysql-server-core-5.5
The following packages will be REINSTALLED:
mysql-server-core-5.5
0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Need to get 3,213 kB of archives. After unpacking 0 B will be used.
Get: 1 http://il.archive.ubuntu.com/ubuntu/ trusty-updates/main mysql-server-core-5.5 amd64 5.5.38-0ubuntu0.14.04.1 [3,213 kB]
Fetched 3,213 kB in 1s (3,163 kB/s)
(Reading database ... 217167 files and directories currently installed.)
Preparing to unpack .../mysql-server-core-5.5_5.5.38-0ubuntu0.14.04.1_amd64.deb ...
Unpacking mysql-server-core-5.5 (5.5.38-0ubuntu0.14.04.1) over (5.5.38-0ubuntu0.14.04.1) ...
Replaced by files in installed package mysql-common (5.6.20-1ubuntu14.04) ...
Processing triggers for man-db (2.6.7.1-1) ...
Setting up mysql-server-core-5.5 (5.5.38-0ubuntu0.14.04.1) ...
$ sudo service mysql status
mysql stop/waiting
$ sudo service mysql start
start: Job failed to start
$ tail /var/log/mysql/error.log
140818 10:31:49 InnoDB: Waiting for the background threads to start
140818 10:31:50 InnoDB: 5.5.38 started; log sequence number 1595675
140818 10:31:50 [ERROR] /usr/sbin/mysqld: unknown option '--explicit_defaults_for_timestamp'
140818 10:31:50 [ERROR] Aborting
140818 10:31:50 InnoDB: Starting shutdown...
140818 10:31:51 InnoDB: Shutdown completed; log sequence number 1595675
140818 10:31:51 [Note]
140818 10:31:51 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
1
Das 1
in der letzten Zeile des Protokolls wurde früher mit hinzugefügt echo
und zeigt an, dass dem Protokoll nichts Neues hinzugefügt wurde.
quelle
timestamp
wurde nur in gefundenetc/mysql/my.cnf
und ich habe sie herauskommentiert. Trotzdem bekomme ich immer noch die gleiche Erwähnung im Protokoll.Antworten:
Sie haben installiert
mysql-server-core-5.6
, was teilweise fehlgeschlagen oder teilweise installiert ist.Das
-explicit_defaults_for_timestamp
ist nur für MySQL 5.6. Es ist wahrscheinlich, dass die teilweise Installationmysql-server-core-5.6
diese Option hinzugefügt hat. Ich werde jetzt vorschlagen, dass Sie alle Spuren desmysql-server-core-5.6
Datenverzeichnisses entfernen und neu initialisieren.Beenden Sie alle laufenden mysqld-Prozesse:
Deinstallieren Sie die
mysql-server-core-5.6
Pakete:Eine Liste der Dateien finden Sie hier
Initialisieren Sie das Datenbankverzeichnis neu:
EIN.
rm -Rf /var/lib/mysql/*
B. B.
mysql_install_db /var/lib/mysql
Kommentieren Sie die
!includedir /etc/mysql/conf.d/
Option in ausmy.cnf
Beenden Sie alle vorhandenen MySQL-Prozesse und starten Sie MySQL mit dem
skip-grant-tables
Option.A. Ermitteln Sie den genauen Pfad des mysqld-Daemons:
B. Führen Sie MySQL ohne Grant-Tabellen aus:
C. Stellen Sie sicher, dass MySQL zuhört:
Sie sollten Port 3306 sehen.
D. Wenn ja, melden Sie sich bei MySQL an:
E. Legen Sie ein neues Passwort fest:
quelle
mysql-server-core-5.5
, aber das Problem wurde dadurch nicht behoben. Ich werde das der Frage hinzufügen./var/lib/mysql
als auch/var/log/mysql
. Dermysql_install_db
Befehl ist fehlgeschlagen, weil erresolveip
nicht gefunden wurde. Ich habe dann installiertmysql-server-5.5
(was anscheinend nicht zusammen mit installiert istmysql-server-core-5.5
) zu bekommenresolveip
. Während der Installation von habemysql-server-5.5
ich denUnable to set password for the MySQL "root" user
Fehler erneut erhalten, zurück zum ersten Platz!mysqld_safe
stirbt sofort:40818 16:52:52 mysqld_safe Logging to '/var/lib/mysql/bruno.err'.
,140818 16:52:52 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
,140818 16:52:54 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
.Ich habe diese Zeile in my.cnf
Ich denke, dass die Parameter my.cnf Bindestriche und keine Unterstriche verwenden sollten.
quelle