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.