Impossibile configurare né avviare MySQL


11

Ho eseguito una nuova installazione di Kubuntu 14.04 sudo aptitude install mysql-server-core-5.6. Impossibile completare l'installazione a causa delle dipendenze di alcuni pacchetti di KDE mysql-server-core-5.5, che sarebbero stati sostituiti. Ora quando corro sudo aptitude install mysql-server-5.5ottengo questo errore dopo aver specificato una password:

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.

In effetti ho letto /usr/share/doc/mysql-server-5.5/README.Debianma non c'era nulla di rilevante per la mia situazione. Il registro MySQL aiuta:

$ 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]

Tuttavia, non riesco a trovare in quale script --explicit_defaults_for_timestampè impostata l' opzione. Ho provato a iniziare mysqlsenza serviceper evitare l' --explicit_defaults_for_timestampopzione ma ancora non si avvia:

$ 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

L'errore mi dice di Remove all --log-error configuration options. Ho quindi modificato /etc/mysql/my.cnfe commentato la seguente riga:

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

Ora non ricevo errori ma non riesco ancora ad accedere:

$ 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)

Quale potrebbe essere il problema? Come devo procedere?

MODIFICARE

Ora ho commentato la explicit-defaults-for-timestampriga in my.cnf. Ecco l'intero file, meno i commenti dell'intestazione:

$ 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/

Questo è ciò che accade quando provo a eseguire MySQL:

$ 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

Come si può vedere, nei log non viene scritto nulla di nuovo e l' explicit_defaults_for_timestampopzione non è impostata da nessuna parte.

Sono stato in grado di reinstallare mysql-server-core-5.5ma questo non ha risolto il problema:

$ 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

Quello 1sull'ultima riga del registro è stato aggiunto in precedenza con echoe indica che non è stato aggiunto nulla di nuovo al registro.


quando esegui netstat -tlpn, vedi la porta 3306 per MySQL?
Craig Efrein,

@CraigEfrein: No, la porta 3306 non viene ascoltata. Ho anche riavviato il sistema per vedere se MySQL si sarebbe avviato all'avvio, ma non è stato così.
dotancohen,

E il --explicit_defaults_for_timestamp, possibili posti da cercare, se non l'hai già fatto. /etc/mysql/my.cnf, /etc/init.d/mysql e / etc / default / mysql
Craig Efrein,

Grazie. La stringa è timestampstata trovata solo in etc/mysql/my.cnfe l'ho commentata. Tuttavia, ho ancora la stessa menzione nel registro.
dotancohen,

C'è un my.cnf nella tua home directory?
Vérace,

Risposte:


4

Hai installato mysql-server-core-5.6, che parzialmente fallito o parzialmente installato.

L' -explicit_defaults_for_timestampè solo per MySQL 5.6. È probabile che l'installazione parziale di abbia mysql-server-core-5.6aggiunto questa opzione. Ho intenzione di suggerire ora di rimuovere qualsiasi traccia mysql-server-core-5.6e reinizializzare la directory dei dati.

  1. uccidere tutti i processi mysqld in esecuzione:

    ps aux | grep mysql
    kill pid
  2. Disinstallare i mysql-server-core-5.6pacchetti:

    apt-get remove mysql-server-core-5.6

    Un elenco di file è qui

  3. Reinizializza la directory del database:

    UN. rm -Rf /var/lib/mysql/*

    B. mysql_install_db /var/lib/mysql

  4. Commenta l' !includedir /etc/mysql/conf.d/opzione inmy.cnf


Uccidi qualsiasi processo MySQL esistente e quindi avvia MySQL usando l' skip-grant-tablesopzione.

A. Ottieni il percorso esatto del demone mysqld:

which mysqld_safe

B. Esegui MySQL senza tabelle di concessione:

/mysqld_safe_directory/mysqld_safe --skip-grant-tables &
ex /bin/mysqld_safe

C.Assicurati che mysql stia ascoltando:

netstat -tlpn 

dovresti vedere la porta 3306.

D. In tal caso, accedi a MySQL:

mysql -u root -h 127.0.0.1

E. Imposta nuova password:

mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit

Grazie Craig. Sono stato in grado di reinstallare mysql-server-core-5.5ma questo non ha risolto il problema. Lo aggiungerò alla domanda.
dotancohen,

@dotancohen, ho aggiornato la mia risposta
Craig Efrein,

Grazie. Ho rimosso completamente ogni traccia di 5.6, ho scritto sia /var/lib/mysqle /var/log/mysql. Il mysql_install_dbcomando non resolveipè riuscito perché non è stato trovato. Ho quindi installato mysql-server-5.5(che a quanto pare non è installato insieme mysql-server-core-5.5) per ottenere resolveip. Durante l'installazione di mysql-server-5.5ho ricevuto di Unable to set password for the MySQL "root" usernuovo l' errore, tornando al punto di partenza!
dotancohen,

@dotancohen risposta aggiornata. Questo dipende dal fatto che MySQL stia effettivamente ascoltando.
Craig Efrein,

Grazie. In realtà, mysqld_safemuore subito: 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.
dotancohen,

1

Ho questa linea in my.cnf

[pol@localhost mysql-5.6.19-linux-x86_64]$ grep expli my.cnf
explicit-defaults-for-timestamp = TRUE

Penso che i parametri my.cnf dovrebbero usare trattini e non trattini bassi.


Grazie. Hai ragione, avevo anche quella linea, anche se mi mancava. Ora mysql non si avvia ma non viene scritto nulla nei registri. Aggiornerò la domanda.
dotancohen,

So che su Xubuntu (non sopporto il desktop Unity!) Ho avuto il diavolo di una volta con problemi come questo. Ora costruisco dalla fonte - se sei interessato, scriverò come lo faccio esattamente . Quello che faccio è adattato da qui dopo molte prove ed errori. È un po 'più lavoro di sudo apt-get install xxx, ma almeno so dove sono i miei file e cosa devo fare se le cose iniziano a andare male!
Vérace,

Grazie, se non riesco a superare questo, proverò le istruzioni a cui ti colleghi.
dotancohen,

Bene, questo è per le persone che vogliono compilare ed eseguire mysql tramite eclipse - l'ho adattato per qualcuno che vuole semplicemente eseguire mysql normalmente. Perché stai usando 5.5?
Vérace,

In realtà, preferirei 5.6 e non uso eclissi.
dotancohen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.