73

RHEL 5に新規インストールされたサーバーを使用しています。ApacheとPHPを正常にインストールできましたが、MySQLのインストールで深刻な問題が発生しています。私は次のことを試しました:

yum install mysql-server mysql 

また、エラーや競合は発生しませんでした。次に、次のコマンドを使用してmysqlを起動しようとしました。

chkconfig --levels 235 mysqld on
service mysqld start

そして、Timeout error occurred trying to start MySQL Daemon.

ログを確認したところ、次のエラーが表示されました。

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

ここからどこへ行けばいいのかわからない。

参考までに、私はRHEL 5を使用しており、最新バージョンのPHP5とApacheをインストールしています。

4

18 に答える 18

83

@Bad Programmerによる回答の後chownに、次のコマンドを実行する必要がある場合もあります。chgrp/var/lib/mysql

sudo mysql_install_db --user=mysql --ldata=/var/lib/mysql

次に、を再起動しますmysqld

于 2014-03-04T18:14:52.547 に答える
67
  1. を使用してmysqlをアンインストールしますyum remove mysql*

  2. 再帰的に削除/usr/bin/mysqlして/var/lib/mysql

  3. ファイルを削除します/etc/my.cnf.rmp

  4. ps -eプロセスをチェックして、mysqlがまだ実行されていないことを確認するために使用します。

  5. サーバーを再起動しますreboot

  6. を実行しますyum install mysql-server。これはまた、mysqlクライアントを依存関係としてインストールするようです。

  7. mysqlに所有権を与え、特権をグループ化します。

    chown -R mysql /var/lib/mysql

    chgrp -R mysql /var/lib/mysql

  8. service mysqld startMySQLデーモンを起動するために使用します。

于 2012-02-01T16:37:19.807 に答える
52

私はarchlinuxでもこの問題を抱えていました。問題は、pacmanがMySQLが予期していたのとは異なる場所にパッケージをインストールしたことでした。私はこれで問題を修正することができました:

sudo mysql_install_db --user=mysql --basedir=/usr/ --ldata=/var/lib/mysql/

これが誰かに役立つことを願っています!

于 2016-04-22T20:02:32.550 に答える
12

私の問題の根本はselinuxのようで、OSのインストール時に自動的にオン(強制)になりました。

/dataにmysqlが必要でした。

my.cnfが持っていることを確認した後:

datadir=/data/mysql

(そして/ var / lib / mysqlにソケットを残します)mysqldのselinuxをオフにするコマンドを実行しました(または、完全にオフにすることもできます):

setsebool -P mysqld_disable_trans=1

次のコマンドを実行しました。

> chown -R mysql .
> chgrp -R mysql .
> mysql_install_db --user=mysql

mysqlデーモンを起動しましたが、その後はすべて正常に機能しました。

于 2012-12-19T00:55:28.780 に答える
11
mysql_install_db –-user=mysql --ldata=/var/lib/mysql

Centos7で私のために働いた

于 2014-11-24T09:14:59.957 に答える
10

Windowsで起動する前にmysqlを初期化します。

mysqld --initialize
于 2015-12-21T09:27:07.177 に答える
7

mysql zipバージョンをダウンロードするときに、mysqldを直接実行すると、次のエラーが発生します。2016-02-18T07:23:48.318481Z 0 [エラー]致命的なエラー:特権テーブルを開いてロックできません:テーブル'mysql.user'存在しません2016-02-18T07:23:48.319482Z0[エラー]中止

最初に以下のコマンドを実行する必要があります:mysqld --initialize

このコマンドの前に、データフォルダが空であることを確認してください。

于 2016-02-18T07:32:05.923 に答える
4

OSXのmysql5.7で同じ問題が発生しました。

rm -rf {datadir}
mysqld --initialize --datadir {datadir}
mysqld --datadir {datadir}
于 2016-06-07T00:12:33.027 に答える
3

datadirを移動する場合は、新しいdatadirにアクセス許可を与えるだけでなく、すべての親ディレクトリにアクセス許可があることを確認する必要があります。

datadirをハードドライブに移動し、Ubuntuに次のようにマウントしました。

/media/*user*/Data/

私のデータディレクトリはデータベースでした。

メディア、ユーザー、データディレクトリのそれぞれに771の権限を設定する必要がありました。

sudo chmod 771 *DIR*

これが機能しない場合、mysqlを機能させる別の方法は、/ etc / mysql/my.cnfのユーザーをrootに変更することです。ただし、セキュリティの観点からそれを行うことにはいくつかの問題があることは間違いありません。

于 2014-10-09T12:36:49.550 に答える
2

私自身のために、私はしなければなりませんでした:

yum remove mysql*

rm -rf /var/lib/mysql/
cp /etc/my.cnf ~/my.cnf.bkup

yum install -y mysql-server mysql-client

mysql_install_db

chown -R mysql:mysql /var/lib/mysql
chown -R mysql:mysql /var/log/mysql

service mysql start

その後、データベースに戻って、最初にデータベースを削除した後、データベースを再度構成することができました。

于 2013-09-06T14:54:57.987 に答える
2

このコマンドだけで、centos6.6の魔法を実行できます。

mysql_install_db

于 2016-02-20T06:36:25.367 に答える
0

私の場合、MySQLデータフォルダのパスに特殊文字「ç」が付いていて、取得できます...

致命的なエラー:特権テーブルを開いてロックできません:テーブル'mysql.host'が存在しません。

すべての特殊文字を削除し、すべてが機能します。

于 2013-06-26T18:36:54.390 に答える
0

CentOS EL 6およびおそらく以前のバージョンでは、これと同じ混乱に陥る1つの方法があります。

最小限のインストールでCentOSEL6をインストールします。たとえば、キックスタートを使用して次のものをインストールしました。

%packages
@core
acpid
bison
cmake
dhcp-common
flex
gcc
gcc-c++
git
libaio-devel
make
man
ncurses-devel
perl
ntp
ntpdate
pciutils
tar
tcpdump
wget
%end

上記のリストの依存関係の1つはですmysql-libs。私のシステムにはデフォルトmy.cnf/etcあり、これには次のものが含まれていることがわかりました。

[mysqld]
dataddir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Generic Linux (Architecture Independent), Compressed TAR Archiveデフォルトのデータディレクトリからビルドする場合、これは、を定義/usr/local/mysql/dataする既存のデータと競合します。また、同じファイルで定義されているものには、mysqlユーザー/グループがに書き込むための権限がありません。/etc/my.cnfdatadir=/var/lib/mysqlpid-file/var/run/mysqld

簡単な解決策はmv /etc/my.cnf /etc/my.cnf.old、一般的なソースプロシージャを機能させることです。

もちろん、ソースRPMを使用する場合のエクスペリエンスは異なります。

于 2013-12-09T23:00:00.293 に答える
0

サーバーを起動しようとしても同じ問題が発生し、「チェック済み」の解決策に従いました。しかし、それでも問題がありました。問題は、-datadirを定義してmysql_install_dbを実行したときに、my/etc/my.cnfファイルが定義された指定のdatadirを指していないことでした。これを更新すると、サーバーは正しく起動しました。

于 2014-04-21T00:22:30.293 に答える
0

以前はMySQLを正常に実行していたが、現在このエラーが発生するサーバーがある場合、MySQLのアンインストールと再インストールはやり過ぎです。

私の場合、サーバーが停止し、いくつかのディスクブロックを使用していました。これは、/ var / lib / mysql / mysql/host.frmや/var/lib/mysql/mysql/proc.frmなどのいくつかのファイルに影響しました。

幸いなことに、これらを別のサーバーからコピーすることができ、これにより、そのテーブルエラーを乗り越えることができました。

于 2016-12-07T12:30:30.280 に答える
0

Docker for Macのデフォルトであるoverlayfs(overlay2)でも同様のエラーが発生しました。mysqlでイメージを作成した後、イメージでmysqlを起動すると、エラーが発生します。

2017-11-15T06:44:22.141481Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table storage engine for 'user' doesn't have this option

「aufs」に切り替えると問題が解決しました。(Docker for Macでは、「設定...」メニューを選択し、「デーモン」タブを選択し、「詳細」タブを選択することで、「daemon.json」を編集できます。)

/etc/docker/daemon.json:

{
  "storage-driver" : "aufs",
  "debug" : true,
  "experimental" : true
}

参照:

https://github.com/moby/moby/issues/35503

https://qiita.com/Hige-Moja/items/7b1208f16997e2aa9028

于 2017-11-15T07:24:36.817 に答える
0

Windowsでは、コマンドプロンプトで管理者として次のコマンドを実行します

Step 1:
mysql_install_db.exe

Step 2:
mysqld --initialize

Step 3:
mysqld --console

Step 4:
In windows

Step 4:
mysqladmin -u root password "XXXXXXX"

Step 5:
mysql -u root -p

Mariadbデータベース情報

于 2020-08-29T01:11:50.873 に答える
-3

Ubuntu 14.04.2 LTSでの私のケースは、my.cnfの他のケースと似ていましたが、私にとっての原因は、以前のインストールから残った〜/.my.cnfでした。そのファイルを削除し、mysql-serverをパージ/再インストールした後、正常に機能しました。

于 2015-07-05T04:10:48.140 に答える