MySQLを構成または開始できません


11

まったく新しいKubuntu 14.04インストールで、私は走りましたsudo aptitude install mysql-server-core-5.6。の一部のKDEパッケージが依存しているため、インストールを完了できませんでしたmysql-server-core-5.5。置き換えられました。実行sudo aptitude install mysql-server-5.5すると、パスワードを指定した後にこのエラーが発生します。

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.

私は実際に読みまし/usr/share/doc/mysql-server-5.5/README.Debianたが、私の状況に関連するものは何もありませんでした。MySQLログは次のことに役立ちます。

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

しかし、--explicit_defaults_for_timestampオプションが設定されているスクリプトを見つけることができません。オプションを回避mysqlせずに起動しようとしましたが、それでも起動しません。service--explicit_defaults_for_timestamp

$ 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

エラーは私に指示しRemove all --log-error configuration optionsます。したがって/etc/mysql/my.cnf、次の行を編集してコメント化しました。

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

エラーは発生しませんが、ログインできません。

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

問題は何でしょうか?どうすればいいですか?

編集

explicit-defaults-for-timestamp行をコメントアウトしましたmy.cnf。これはファイル全体ですが、ヘッダーコメントはありません。

$ 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を実行しようとすると、次のようになります。

$ 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

ご覧のように、ログに新しいものが書き込まれるexplicit_defaults_for_timestampことはなく、オプションはどこにも設定されていません。

再インストールできましたmysql-server-core-5.5が、問題は解決しませんでした:

$ 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

ことを1ログの最後の行にと先に加えてecho、新しいログに追加されたことは何もないことを示します。


netstat -tlpnを実行すると、MySQLのポート3306が表示されますか?
Craig Efrein 2014

@CraigEfrein:いいえ、ポート3306はリッスンされていません。システムを再起動して、MySQLが起動時に起動するかどうかを確認しましたが、起動しませんでした。
dotancohen 2014

そして--explicit_defaults_for_timestampは、まだ見ていない場合は、探すべき場所です。/etc/mysql/my.cnf、/etc/init.d/mysqlおよび/ etc / default / mysql
Craig Efrein

ありがとうございました。文字列timestampはでのみ見つかり、etc/mysql/my.cnfコメントしました。それでも、同じことがログに記載されています。
dotancohen 2014

ホームディレクトリにmy.cnfがありますか?
Vérace

回答:


4

をインストールしましたがmysql-server-core-5.6、部分的に失敗したか、部分的にインストールされました。

これ-explicit_defaults_for_timestampはMySQL 5.6専用です。の部分的なインストールがmysql-server-core-5.6このオプションを追加した可能性があります。ここでmysql-server-core-5.6、データディレクトリのトレースを削除して再初期化することをお勧めします。

  1. 実行中のmysqldプロセスをすべて終了します。

    ps aux | grep mysql
    kill pid
  2. mysql-server-core-5.6パッケージをアンインストールします。

    apt-get remove mysql-server-core-5.6

    ファイル一覧はこちら

  3. データベースディレクトリを再初期化します。

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

    B. mysql_install_db /var/lib/mysql

  4. !includedir /etc/mysql/conf.d/オプションをコメント化my.cnf


既存のMySQLプロセスを終了し、skip-grant-tablesオプションを使用してMySQLを起動します。

A. mysqldデーモンの正確なパスを取得します。

which mysqld_safe

B.付与テーブルなしでMySQLを実行します。

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

C. mysqlが待機していることを確認します。

netstat -tlpn 

ポート3306が表示されます。

D.その場合は、MySQLにログインします。

mysql -u root -h 127.0.0.1

E.新しいパスワードを設定します。

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

クレイグありがとう。再インストールはできましたmysql-server-core-5.5が、問題は解決しませんでした。それを質問に追加します。
dotancohen 2014

@dotancohen、私の回答を更新
Craig Efrein

ありがとうございました。私は5.6のトレースを完全に削除/var/lib/mysqlしました/var/log/mysql。が見つからmysql_install_dbなかったため、コマンドは失敗しresolveipました。次に、インストールするようにインストールしましたmysql-server-5.5(明らかにと一緒にインストールされていませんmysql-server-core-5.5resolveip。期間中のインストールmysql-server-5.5私が得たUnable to set password for the MySQL "root" user振り出しに戻って、再びエラーを!
dotancohen 2014

@dotancohenが回答を更新しました。これは、MySQLが実際にリッスンしているかどうかによって異なります。
Craig Efrein 2014

ありがとう。実際には、mysqld_safeすぐに死にます: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/mysql140818 16:52:54 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
dotancohen 2014

1

my.cnfにこの行があります

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

my.cnfパラメータにはアンダースコアではなくハイフンを使用する必要があると思います。


ありがとうございました。あなたが正しい、私はそれを逃したが、私はそのラインも持っていた。これで、mysqlは起動しませんが、ログには何も書き込まれません。質問を更新します。
dotancohen 2014

Xubuntu(Unityデスクトップに耐えられない!)には、このような問題が発生する時代の悪魔がいました。私は今ソースからビルドします-興味があれば、私が正確にどのように行うかを書きます。私がやっていることは、多くの試行錯誤の末、ここから改作されました。これはsudo apt-get install xxxよりも少し手間がかかりますが、少なくともファイルの場所と、問題が発生し始めた場合の対処方法はわかっています。
Vérace

ありがとうございます。これがうまくいかない場合は、リンク先の手順を試してみます。
dotancohen 2014

まあ、それはEclipseを介してmysqlをコンパイルして実行したい人のためのものです-私はmysqlを普通に実行したい人のためにそれを適応させました。なぜ5.5を使用しているのですか?
Vérace

実際、私は5.6を好み、日食は使用しません。
dotancohen 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.