回答:
MySQLリファレンスマニュアルのルートパスワードのリセットに関する章を読んで実行します。
このプロシージャは、認証なしでmysqlデーモンを起動し、資格情報を提供せずに接続できるようにします。このモードでは、正常に接続し、パスワードと許可をリセットできます。その後、適切な権限を与えてmysqlを再起動することを忘れないでください。
これがDebian / Ubuntuボックスの場合、debian-sys-maintと呼ばれる特別なルート相当アカウントがあります。パスワードは/etc/mysql/debian.cnfで読むことができます
そのパスワードを使用して、次を使用してdebian-sys-maintとしてmysqlにログインできます。
mysql --defaults-file=/etc/mysql/debian.cnf mysql
ログインしたら、次を実行します。
update user set password=password('<new password>') where user='root';
flush privileges;
quit;
これで、新しいパスワードを使用してルートにアクセスできるようになります。
mysql -uroot -p
ルートユーザーが存在しませんでした。オン
CREATE USER root@localhost;
わかった
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
解決策は
mysqld_safe --skip-grant-tables &
mysql
INSERT INTO user (Host,User,Password) VALUES ('localhost', 'root', 'changethispassword');
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
その後、私はこれから少し助けてすべての特権を1つずつ追加しました:
mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N
(そして、これはもっと自動化できますし、そうすべきです)
注:正しい数の「Y」を見つけることはINSERT
PITAです。
MySQLリファレンスマニュアルの手順はあまり明確ではないため、ここでは簡単な言葉で答えようとしています。(この回答はMacBook OSXユーザーに関連しています):
my.cnf
。(私にとっては@に配置されていました/Applications/XAMPP/xamppfiles/etc
。見つからない場合は検索できます)。my.cnf
任意のテキストエディターでファイルを開きます。 "skip-grant-tables"
の最後に(引用符なしで)追加し[mysqld]
、ファイルを保存します。 skip-grant-tables
オプションで始まります。 Terminal
て実行するmysql
mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit