MySQL yapılandırılamıyor veya başlatılamıyor


11

Yepyeni bir Kubuntu 14.04 kurulumunda koştum sudo aptitude install mysql-server-core-5.6. Yükleme, değiştirilecek olan bazı KDE paketlerinin bağımlılıkları nedeniyle tamamlanamadı mysql-server-core-5.5. Şimdi çalıştırdığımda sudo aptitude install mysql-server-5.5bir şifre belirledikten sonra bu hatayı alıyorum:

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.

Aslında okudum /usr/share/doc/mysql-server-5.5/README.Debianama durumumla ilgili hiçbir şey yoktu. MySQL günlüğü yardımcı olur:

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

Ancak --explicit_defaults_for_timestampseçeneğin hangi komut dosyasında ayarlandığını bulamıyorum . Ben başlatmaya çalışması mysqlolmadan serviceönlemek için --explicit_defaults_for_timestampseçenek ama yine de başlamaz:

$ 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

Hata bana söyler Remove all --log-error configuration options. Bu nedenle /etc/mysql/my.cnfaşağıdaki satırı düzenledim ve yorum yaptım :

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

Şimdi hata alıyorum ama yine de giriş yapamıyorum:

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

Sorun ne olabilir? Nasıl ilerlemeliyim?

DÜZENLE

Şimdi explicit-defaults-for-timestampsatırın yorumunu yaptım my.cnf. Tüm dosya, eksi başlık yorumları:

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

MySQL'i çalıştırmayı denediğimde olan budur:

$ 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

Görülebileceği gibi, günlüklere yeni bir şey yazılmaz ve explicit_defaults_for_timestampseçenek hiçbir yere ayarlanmaz.

Yeniden yükleyebildim mysql-server-core-5.5ama bu sorunu çözmedi:

$ 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

Bu 1günlüğün son satırında ile daha önce eklenmiş echove yeni log eklendi hiçbir şeyin gösterir.


netstat -tlpn komutunu çalıştırdığınızda, MySQL için 3306 numaralı bağlantı noktasını görüyor musunuz?
Craig Efrein

@CraigEfrein: Hayır, 3306 numaralı bağlantı noktası dinlenmiyor. MySQL'in önyüklemede başlayıp başlamayacağını görmek için sistemi yeniden başlattım, ancak olmadı.
dotancohen

Ve --explicit_defaults_for_timestamp, henüz yapmadıysanız, bakmak için olası yerler. /etc/mysql/my.cnf, /etc/init.d/mysql ve / etc / default / mysql
Craig Efrein

Teşekkür ederim. Dize timestampsadece içinde bulundu etc/mysql/my.cnfve ben dışarı çıkardı. Yine de, yine de aynı şeyi günlükte alıyorum.
2014

Ana dizininizde bir my.cnf dosyası var mı?
Vérace

Yanıtlar:


4

Yüklemişsiniz mysql-server-core-5.6, kısmen başarısız olmuş veya kısmen yüklenmiş.

-explicit_defaults_for_timestampSadece MySQL 5.6 içindir. Kısmi kurulumun mysql-server-core-5.6bu seçeneği eklemesi muhtemeldir . Şimdi herhangi bir iz kaldırmak mysql-server-core-5.6ve veri dizini yeniden başlatmak öneririz .

  1. çalışan mysqld süreçlerini öldürmek:

    ps aux | grep mysql
    kill pid
  2. mysql-server-core-5.6Paketleri kaldırın :

    apt-get remove mysql-server-core-5.6

    Dosyaların listesi burada

  3. Veritabanı dizinini yeniden başlatın:

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

    B. mysql_install_db /var/lib/mysql

  4. İçindeki !includedir /etc/mysql/conf.d/seçeneği yorumlayınmy.cnf


Mevcut herhangi bir MySQL Sürecini öldürün ve ardından skip-grant-tablesseçeneği kullanarak MySQL'i başlatın .

C. MySQL artalan sürecinin tam yolunu öğrenin:

which mysqld_safe

B. Hibe tabloları olmadan MySQL'i çalıştırın:

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

C. MySQL'in dinlediğinden emin olun:

netstat -tlpn 

3306 numaralı bağlantı noktasını görmelisiniz.

D. Öyleyse, MySQL'de oturum açın:

mysql -u root -h 127.0.0.1

E. Yeni şifre belirleyin:

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

Teşekkürler Craig. Yeniden yükleyebildim, mysql-server-core-5.5ancak bu sorunu çözmedi. Bunu soruya ekleyeceğim.
dotancohen

@dotancohen, cevabımı güncelledi
Craig Efrein

Teşekkür ederim. Tamamen, 5.6 herhangi bir iz çıkarılan hem rm'ed /var/lib/mysqlve /var/log/mysql. mysql_install_dbKomut çünkü başarısız resolveipbulunamadı. Sonra yüklü mysql-server-5.5(görünüşte ile birlikte yüklü değil hangi mysql-server-core-5.5almak için) resolveip. Kurulumu sırasında hatayı tekrar mysql-server-5.5aldım, Unable to set password for the MySQL "root" usertekrar kareye!
dotancohen

@dotancohen cevap güncellendi. Bu MySQL'in gerçekten dinleyip dinlemediğine bağlıdır.
Craig Efrein

Teşekkürler. Aslında, mysqld_safehemen ölür: 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

My.cnf dosyasında bu satır var

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

My.cnf parametrelerinin alt çizgi değil, kısa çizgi kullanması gerektiğini düşünüyorum.


Teşekkür ederim. Haklısın, kaçırdığım halde bu çizgiye de sahiptim. Şimdi, mysql başlamaz, ancak günlüklere hiçbir şey yazılmaz. Soruyu güncelleyeceğim.
dotancohen

Xubuntu'da (Unity masaüstüne dayanamıyorum!) Bunun gibi sorunlarla ilgili bir zamanın şeytanı olduğunu biliyorum. Şimdi kaynaktan yapıyorum - eğer ilgileniyorsanız, tam olarak nasıl yaptığımı yazacağım . Yaptığım şey, çok fazla deneme yanılma sonrasında buradan uyarlanıyor . Bu sudo apt-get install xxx'ten biraz daha fazla iş, ama en azından dosyalarımın nerede olduğunu ve işler yanlış gitmeye başlarsa ne yapacağımı biliyorum!
Vérace

Teşekkür ederim, eğer bunu başaramazsam, bağlantı verdiğiniz talimatları deneyeceğim.
dotancohen

Bu, tutulma yoluyla mysql'i derlemek ve çalıştırmak isteyen insanlar için - normalde mysql çalıştırmak isteyen biri için uyarladım. Neden 5.5 kullanıyorsunuz?
Vérace

Aslında 5.6'yı tercih ederim ve tutulma kullanmam.
dotancohen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.