web-dev-qa-db-ja.com

特権テーブルを開いてロックできません:テーブル 'mysql.user'は存在しません

バイナリZipを使用してMySQLコミュニティサーバー5.7.10をインストールしました。 c:\mysqlにZipを抽出し、c:\mysql\dataにデータフォルダーを作成しました。構成ファイルをmy.iniとして作成し、c:\mysql(抽出されたZipのルートフォルダー)に配置しました。以下はmy.iniファイルの内容です

# set basedir to your installation path
basedir=C:\mysql
# set datadir to the location of your data directory
datadir=C:\mysql\data

mysqld --consoleを使用してMySQLを起動しようとしていますが、以下のエラーでプロセスが中止されます。

2015-12-29T18:04:01.141930Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
2015-12-29T18:04:01.141930Z 0 [ERROR] Aborting 

これに関する助けをいただければ幸いです。

39
BValluri

次のコマンドを実行して、データディレクトリを初期化する必要があります

mysqld --initialize [ランダムなルートパスワードを使用]

mysqld --initialize-insecure [空のルートパスワード付き]

64
anonymous

Maria DBでは、mysql_install_dbを使用します。私の場合、データパスに環境変数を使用します。これは、mysqldがコマンドラインを介してどこを知る必要があるだけでなく、インストールスクリプトも必要とすることを意味します。

mysql_install_db --user=root --datadir=$db_datapath
3
Charlie

mysqld --initializeでデータディレクトリを初期化してからmysqld&

Mysqld --initializeを使用せずにmysqld&をすでに起動している場合は、データディレクトリ内のすべてのファイルを削除する必要があります。

/etc/my.cnfを変更して、次のようにデータディレクトリにカスタムパスを追加することもできます。

[mysqld]
...  
datadir=/path/to/directory
3
Kenovo

同じ問題がありました。何らかの理由で--initializeが機能しませんでした。さまざまなパラメーター、構成、およびコマンドを使用した約5時間の試行錯誤の後、問題の原因がファイルシステムであることがわかりました。

大規模なUSB HDDドライブでデータベースを実行したかった。 2 TBより大きいドライブはGPTパーティションに分割されています!解決策が記載されたバグレポートを次に示します。

https://bugs.mysql.com/bug.php?id=2891

一言で言えば、my.iniに次の行を追加します。

innodb_flush_method=normal

Windows上のmysql 5.7でこの問題が発生しました。

1
Gerfried

上記のように、mysql-5.7.18で同様の問題が発生しました。
私はこれをこのようにした

1。 「MYSQL_HOME\bin\mysqld.exe --initialize-insecure」からこのコマンドを実行しました
2。その後、「MYSQL_HOME\bin\mysqld.exe」を開始しました
3。ユーザー名「root」でこのlocalhost:3306にワークベンチを接続します
4。次に、「SET PASSWORD FOR 'root' @ 'localhost' = 'root';」というクエリを実行しました

パスワードも正常に更新されました。

0
Muthahir Nawaz