MySQLルートパスワードの変更


95

MySQLのrootパスワードをリセットしようとしています。mysqld_safe --skip-grant-tablesを実行し、ルートパスワードを更新し、userテーブルをチェックして、そこにあることを確認しました。mysqlデーモンを再起動したら、設定した新しいrootパスワードを使用してログインしようとしましたが、ユーザーの「root」エラーのためにアクセスが拒否されました。私はmysqlを完全に削除して再インストールしようとしましたが(my.cnfファイルの削除を含む)、それでもうまくいきません。私が次に何ができるかについて誰かが何か提案はありますか?

前もって感謝します


2
実際のエラーを投稿してください
Vishwanath Dalvi '23 / 09/23

16
ロックアウトされていない場合SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somepassword'); が最も安全です。
サブジェントン2013

ビデオの手順に従って、サーバーの1つでパスワードを変更しましたyoutu.be/gFo5DV_pSg8
Prem


1
サーバーのバージョン:8.0.20-0ubuntu0.20.04.1(Ubuntu)エラー1064(42000):SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、「PASSWORD( "1")」の1行目付近で使用する正しい構文を確認してくださいSET PASSWORD FOR 'root' @ 'localhost' = PASSWORD( "somepassword");
弟子

回答:


124

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');


7
これは5.7ではうまくいきますが、受け入れられた答えはうまくいきません。
Stoopkid 2017年

2
これは、MySQL rootパスワードが空白に設定されている場合の正しい解決策です。
fschuindt

3
> UPDATE mysql.user SET authentication_string = PASSWORD( 'MyNewPass')WHERE user = 'root'; > FLUSH PRIVILEGES; MySQLバージョン5.7.xでは、mysqlテーブルにパスワードフィールドはありません。authentication_stringに置き換えられました。
Robert Anthony S. Tribiana

2
これで大丈夫ですが、実際には何もしません
Freedo

1
FLUSH PRIVILEGESデータベースサーバーを再起動せずに変更を有効にするには、追加のコマンドが必要です。
NetVicious

60

MySQLリファレンスマニュアルからこれを見てください:

mysqlに最初にログインします。

# mysql -u root -p

次に、mysqlプロンプトで次を実行します。

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';

その後

FLUSH PRIVILEGES;

詳細については、このページを参照してください:ルートパスワードのリセット:Unixシステム


ユーザーのパスワードを更新するときに、「セーフ更新モードを使用していて、KEY列を使用するWHEREなしでテーブルを更新しようとしました...」というエラーが発生しました。このエラーを回避する方法については、stackoverflow.com / questions / 11448068 /…を参照してください。
Joe Borysko、2016

エラー1064(42000):SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、 '(' MyNewPass ')WHERE User =' root ''の近くで使用する正しい構文を1行目で確認してください
discipleartem

28
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQLのドキュメントにルートパスワードのリセットを見つけることができます。


このクエリは機能しますが、新しいパスワードが機能しません(アクセスが拒否されました)。rootユーザーaskubuntu.com/a/784347/160368を再作成した後にのみ機能し始めます。
hlcs

1
MySQL 8.0.20で動作し、このコマンドを使用してデータフォルダーを初期化した後mysqld --initialize --console
A. Henteti

27

これはWAMP v3.0.6以降の更新された回答です

> UPDATE mysql.user 
> SET authentication_string=PASSWORD('MyNewPass') 
> WHERE user='root';

> FLUSH PRIVILEGES;

MySQLバージョン5.7.xでは、mysqlテーブルにパスワードフィールドはありません。authentication_stringに置き換えられました。(これは端末/ CLI用です)

UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE user='root';

FLUSH PRIVILEGES;

(これはPHPMyAdminまたはMysql GUIの場合)


この回答は、mysql.userテーブルを更新する必要があると言う数少ない人の1人です。他のデータベース(useコマンドで設定)を使用している場合は、テーブルuserが存在しないというエラーが発生することに注意してください。ありがとうございます!
Aleksandar

1
私のために働く。5.7.xを使用していますが、mysql.userテーブルがありません。その他の回答は時代遅れです
Siwei Shen申思维

お力になれて、嬉しいです!!
Robert Anthony S. Tribiana

私はそれを使用する私の意図であるため、それが原因で、端末のために意図されている行あたりのセミコロン>ロールバック
ロバートアンソニーS. Tribiana

影響を受けた行数0、一致した行数:3変更:0 ...?
trainoasis

22

それを見つけた!パスワードを変更したときにパスワードをハッシュするのを忘れました。私はこのクエリを使用して問題を解決しました:

update user set password=PASSWORD('NEW PASSWORD') where user='root';

を忘れてPASSWORD('NEW PASSWORD')、新しいテキストをプレーンテキストで入力した


他の人が解決策を見ることができるように、戻ってきて回答を受け入れるようにしてください
ghostJago

1
dev.mysql.com/doc/refman/5.0/en/resetting-permissions.htmlは、注意してこれを行う方法を示してい--init-file=ます。
サブジェントン2013

3
同じコマンドを使用すると、次のエラーが返されるのはなぜですか?エラー1054(42S22):「フィールドリスト」の不明な列「パスワード」
エイドリアンM.

1
SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、 '(' NEW PASSWORD ')where user =' root ''の1行目付近で使用する正しい構文を確認します
discipleartem

20

以下の手順に従ってください。

ステップ1。mysqlを停止する

ステップ2。 sudo mysqld_safe --skip-grant-tables

ステップ3。mysql -u root

ステップ4。use mysql;

ステップ5。show tables;

ステップ6。describe user;

ステップ7。update user set authentication_string=password('1111') where user='root';

パスワード1111でログイン


3
flush privileges最後のステップとして重要です。
Khom Nazid

それは本当にお尻で行われます。パスワードをリセットするためにすべてのチュートリアルを行いました。新しいパスワードでログインした場合を除いて、すべてが機能しますが、機能しません。
Shidomaru NeveRage

mysqldが起動しておらず、/ var / lib / mysqlのデータベースを含むこのmysqldデーモンのようなメッセージがpidファイル/var/run/mysqld/mysqld.pidのmysqld_safe mysqldで終了した場合:mkdir / var / run / mysqld chomod 777 / var / run / mysqldと最初からすべてを開始
jokermt235

18

私も周りを検索しましたが、おそらくいくつかの答えはいくつかの状況に適しています、

私の状況は、Ubuntu 18.04.2 LTSシステム上のMysql 5.7です。

(ルート権限を取得)

$ sudo bash

(root dbユーザーのパスワードを設定+ステップでセキュリティを実装)

# mysql_secure_installation

(ソケットの代わりにパスワードを使用してrootユーザーにアクセス権を与えます)

(+編集:どうやらもう一度パスワードを設定する必要がありますか?)

(「mySecretPassword」に設定しないでください!!!)

# mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> set password for 'root'@'localhost' = PASSWORD('mySecretPassword'); 
mysql> FLUSH PRIVILEGES;
mysql> exit;

# service mysql restart

この素晴らしい答えzetacu(およびerich)に感謝(数時間検索した後...)

お楽しみください:-D

S


これは、少なくともmysqlサーバー5.7では、これまでのところ最良の答えです。
ゾルタンハィドゥー

最良の答え。ありがとうございました。
Luciano Fantuzzi

11

MySQL 8.0.4以降

現在のrootユーザーを更新するには:

select current_user();
set password = 'new_password';

他のユーザーを更新するには:

set password for 'otherUser'@'localhost' = 'new_password';

パスワードを更新する前にパスワードポリシーを設定するには:

set global validate_password.policy = 0;
set password = 'new_password';
set password for 'otherUser'@'localhost' = 'new_password';

rootパスワードを更新するその他の/より良い方法:

mysql_secure_installation

5.x認証を使い続けて、レガシーアプリを引き続き使用したいですか?

オン my.cnf

default_authentication_plugin = mysql_native_password

ルートを更新するには:

set global validate_password.policy = 0;
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';

7

これは私のために働きました-

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html


エラー1064(42000):SQL構文にエラーがあります。1行目の「IDENTIFIED BY 'MyNewPass」付近で使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください
trainoasis

CLIを使用してSQLで正確なコピーをコピーしました:o
trainoasis

もちろん、私のサーバー+ mysql -u root -pに
ssh

6

パスワードをリセットする必要があります!mac osx(テスト済みおよび動作中)およびubuntuの手順

MySQLを停止する

$ sudo /usr/local/mysql/support-files/mysql.server stop

セーフモードで起動します。

$ sudo mysqld_safe --skip-grant-tables

(上の行はコマンド全体です)

これは、プロセスが完了するまで実行中のコマンドになるため、別のシェル/ターミナルウィンドウを開き、パスワードなしでログインします。

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

MySQLを起動します

sudo /usr/local/mysql/support-files/mysql.server start

新しいパスワードは「password」です。


メッセージがあります:データベースが選択されていません
Mimouni


5

MySQL 5.7.6以降の場合:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5以前の場合:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

3

現在の最新のmysqlバージョン(8.0.16)では、これらの回答はどれもうまくいきませんでした。

いくつかの異なる答えを見てそれらを組み合わせた後、これは私が結局うまくいったことです:

update user set authentication_string='test' where user='root';

お役に立てれば。



2

MySQL 5.7では、パスワードは「authentication_string」に置き換えられます。

使用する

update user set authentication_string=password('myfavpassword') where user='root';

2

使用mysqladminは MySQLのパスワードを変更するためのコマンドラインユーティリティを:

mysqladmin --user=root --password=oldpassword password "newpassword"

ソース


1

@ktaからの回答を試しましたが、うまくいきませんでした。

MySQL 8.0を使用しています

これは私のために働きました:

mysql> SET PASSWORD FOR 'root'@'localhost' = 'yourpassword'


1
コードに説明を追加してください-これは7年前の質問をどのように正確に解決しますか?
Nico Haase

7年間で構文が変更されたようです。PASSWORD()でパスワードをラップしていないdev.mysql.com/doc/refman/8.0/en/set-password.html
kangkyu

パスワードハッシュは41桁の16進数である必要があります
Mimouni

1

とてもたくさんのコメントですが、私はこの方法を手伝いました:

sudo mysqladmin -u root password 'my password'

私の場合、インストール後、rootユーザーのパスワードなしでmysqlサービスを取得しましたが、セキュリティのためにパスワードを設定する必要がありました。


古いパスワードを知らなくても、mysql rootユーザーのパスワードをリセットするために使用できます。このパスワードは記録されますとしてではなく、必ず誰も、あなたのsyslogへのアクセス権を持っていないことを確認:Aug 07 16:21:55 ubuntupc sudo[93250]: user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/mysqladmin -u root password 'my password'
Gryu

0

すべてのWampサービスを停止し、Wampを終了します。

メモ帳を開き、次のように入力します> SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD( '');

次に、c:ドライブに任意の名前で保存します。たとえば、「c:/example.txt」のようにします。

今すぐあなたの「沼」に移動しますwamp> bin> mysql> mysql(your version)> bin私の場合パスは「C:\ wamp \ bin \ mysql \ mysql5.6.17 \ bin」です

パスをコピーしてから、cmdを(ctrl + r)で実行してから、「cmd」と入力します(Enter)

cdと入力し、cmdを右クリックしてパスを貼り付け(Enter)、中括弧なしで(mysqld --init-file = C:\ example.txt)と入力します(Enter)

PCを再起動するか、taskmgrを開いてmysqld.exeを終了します

wampを起動すると、パスワードが削除されます...


0

MacOSユーザーの場合、ルートパスワードを忘れた場合、@ thusharaKの回答(https://stackoverflow.com/a/28601069/5628856)は適切ですが、もう少しトリックがあります。

システム環境設定を使用してmysqlサーバーサイドを起動する場合は、単に

sudo mysqld_safe --skip-grant-tables

うまくいかないかもしれません。

コマンドライン引数がシステム起動設定と同じであることを確認する必要があります。

次のコマンドは私のために働きます:

/usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so --skip-grant-tables

使用できます

ps aux | grep mysql

あなた自身のものをチェックする。


-1

Ubuntuでは、

sudo dpkg-reconfigure mysql-server-5.5 

5.5現在のバージョンに置き換えます。新しいrootパスワードを求められます。


どのOSで?これは意味がありません。
Khom Nazid

-1
  1. Macでは、システム環境設定> MySQLを開きます。
  2. MySQLの構成セクションで、データベースの初期化を確認します。
  3. プロンプトでパスワードを変更します。 データベースを初期化する
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.