オプションを有効にして Ubuntu 16.04 で MySQL を再起動する必要があります--skip-grant-tables
が、ルート パスワードがわからないか、機能しません。--skip-grant-tables
パスワードなしで設定するにはどうすればよいですか?
通常ユーザーとして試してみると:
mysqld --skip-grant-tables
私はこれを見る:
mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13 - Permission denied)
そこで、/etc/init.d/mysql からこの例を取り出し、次の--skip-grant-tables
パラメータを追加しました。
su - mysql -s /bin/bash -c "/usr/sbin/mysqld --skip-grant-tables"
Password:
su: Authentication failure
そのため、su は機能せず、ルート パスワードも機能しませんでした。次のことも試しました。
sudo su - mysql -s /bin/bash -c "/usr/sbin/mysqld --skip-grant-tables"
No directory, logging in with HOME=/
--skip-grant-tables を使用して mysql を起動するにはどうすればよいですか?
答え1
ルート パスワードがわからない場合 (またはエラー'ERROR 1045 (28000): Access denied for user 'root'@'localhost'
によりアクセスできない場合)、MySQL 構成ファイルにオプションを追加することでアクセスできます。まず、編集用に開きます。
sudo nano /etc/mysql/my.cnf
[mysqld]
次に、以下の値を検索して入力します。
[mysqld]
# For debugging and recovery only #
skip-grant-tables
skip-networking
###################################
ご覧のとおり、ここでコマンドラインパラメータを追加するコツは、--
パラメータの先頭から を削除することです。MySQLサービスを再起動するテーブルにアクセスして、ルート ユーザーのパスワードをリセットしたり、必要な操作をほぼすべて実行できます。(ただし、権限テーブルはロードされていないため、何も実行できません。)
注意してください。このモードの間、ログインしているすべてのユーザーはデータベース全体にアクセスできます。そのため、skip-networking
上記のオプションを追加して、リカバリ中にリモート ユーザーがテーブルにアクセスできないようにしました。
サーバーのセキュリティを再度確保するために、完了したら必ずこれらの行をコメントアウトし、もう一度 mysql を再起動してください。
答え2
コメントより。
init.rc 構成の場合:
最も簡単な方法は、/etc/init.d/mysql を一時的に変更してオプションを含め--skip-grant-tables
、このスクリプト (/etc/init.d/mysql start) を使用して起動することです。
Ubuntu 16.04 のような新興システムでは、これを で行う必要があります
/lib/systemd/system/mysql.service
。