ルートユーザーをデータベースからロックアウトしました。ルートユーザーにすべての権限を取得する必要があります。パスワードがあり、MySQLにログインできます。ただし、rootユーザーにはすべての特権はありません。
私はこの質問のタイトルと同じ問題を抱えていたので、他の誰かがこの質問をグーグルで検索し、WindowsでMySQLを「skip-grant-tables」モードで起動したい場合、ここで私がやったことです。
管理者ツールのサービスを介してMySQLサービスを停止します。
My.ini構成ファイルを変更します(デフォルトパスを想定)
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
またはMySQLバージョン> = 5.6の場合
C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
サーバーセクションの[mysqld]で、次の行を追加します。
skip-grant-tables
あなたが持っているように
# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
[mysqld]
skip-grant-tables
サービスを再度開始すると、パスワードなしでデータベースにログインできるはずです。
MySQLでrootユーザーの制御を取り戻す方法。
危険:危険な操作
編集my.cnf
ファイルを使用しています。
Sudo vi /etc/my.cnf
Mysqldブロックに行を追加します。*
skip-grant-tables
保存して終了。
MySQLサービスを再起動します。
service mysql restart
サービスの状態を確認してください。
service mysql status
Mysqlに接続します。
mysql
メインデータベースを使用します。
use mysql;
ユーザーrootパスワードを再定義します。
UPDATE user SET `authentication_string` = PASSWORD('myNuevoPassword') WHERE `User` = 'root';
ファイルmy.cnfを編集します。
Sudo vi /etc/my.cnf
行を消去します。
skip-grant-tables
保存して終了。
MySQLサービスを再起動します。
service mysqld restart
サービスの状態を確認してください。
service mysql status
データベースに接続します。
mysql -u root -p
プロンプトが表示されたら、新しいパスワードを入力します。
このアクションは非常に危険です。ユーザーとパスワードなしで誰でも制限なくすべてのデータベースに接続できます。慎重に使用する必要があり、mustリスクを回避するためにすばやく元に戻す
lotsのことを試した後、これは私のために働いたものです:
Sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
そのため、最初にSudoを使用して、パスワードを必要とせずにmysqlにrootとしてログインします。次に、ルートのパスワードを更新します。
その後、mysqld
を再起動しました:
Sudo service mysql restart
そして、newpassword
がルートにログインしました!
Linuxシステムでは、次のことができます(他のOSでも同様です)
Mysqlプロセスが実行されているかどうかを確認します。
Sudo service mysql status
実行中の場合は、プロセスを停止します(すべてのmysqlツールを必ず閉じてください)
Sudo service mysql stop
停止に問題がある場合は、以下を実行してください
プロセスを検索:ps aux | grep mysqld
プロセスを強制終了します:kill -9 process_id
スキップグラントを使用してmysqlをセーフモードで起動します
Sudo mysqld_safe --skip-grant-tables &
mysql 5.6サーバーを使用していて、C:\Program Files\MySQL\MySQL Server 5.6\my.ini
:に問題がある場合
C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
にアクセスしてください。
skip-grant-tables
を追加する必要がありますが、パスワードは必要ありません。
# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
# server_type=3
[mysqld]
skip-grant-tables
注:skip-grant-tables
での作業が完了したら、C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
のファイルを復元する必要があります。
次のコマンドを使用します(「d」に注意してください):mysqld --skip-grant-tables
以下のコマンドをコンソールから実行して、コマンドプロンプトからmysqlデータベースを起動する際にユーザーテーブルの検証をスキップしてください
mysqld -skip-grant-tables
これがWindowsボックスの場合、最も簡単なことは、サーバーを停止し、mysql構成ファイルにskip-grant-tablesを追加して、サーバーを再起動することです。
パーミッションの問題を修正したら、上記を繰り返しますが、skip-grant-tablesオプションを削除します。
設定ファイルの場所がわからない場合は、mysql send SHOW VARIABLES LIKE '%config%'
と返された行の1つは、構成ファイルの場所を示します。
WAMP64サーバーを使用して、Windows 10を使用しています。 my.cnf
およびmy.ini
を検索しました。 my.ini
でC:\wamp64\bin\mariadb\mariadb10.2.14
が見つかりました。
同僚からの指示に従う:
my.ini
を開き、[mysqld]
を検索しました'skip-grant-tables'
セクションの最後に[mysqld]
を追加しました(ただし、その中に)skip-grant-tables
オプションに関する警告が表示されますALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
を貼り付けますmy.ini
ファイルで、'skip-grant-tables'
行を消去し、ファイルを保存しますこれで、新しいパスワードで入力できます。ここのすべての回答に感謝します。
My.iniファイルを編集してskip-grant-tablesを追加し、mysqlサーバーを再起動します。
[mysqld]
port= 3306
socket = "C:/xampp/mysql/mysql.sock"
basedir = "C:/xampp/mysql"
tmpdir = "C:/xampp/tmp"
datadir = "C:/xampp/mysql/data"
pid_file = "mysql.pid"
# enable-named-pipe
key_buffer = 16M
max_allowed_packet = 1M
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error = "mysql_error.log"
skip-grant-tables
# Change here for bind listening
# bind-address="127.0.0.1"
# bind-address = ::1