web-dev-qa-db-ja.com

ルートパスワードをnullに設定する方法

MySQLのrootユーザーのパスワードをnullに変更するにはどうすればよいですか-パスワードなしまたは''-MySQLコマンドラインクライアントから?

62
Stormshadow

次の5つの簡単な手順で、MySQLデータベースサーバーのパスワードを回復できます。

ステップ#1:MySQLサーバープロセスを停止します。

ステップ#2:--skip-grant-tablesオプションを使用してMySQL(mysqld)サーバー/デーモンプロセスを起動し、パスワードを要求しないようにします。

ステップ#3:rootユーザーとしてmysqlサーバーに接続します。

ステップ#4:新しいmysqlルートアカウントパスワードのセットアップ、つまりmysqlパスワードのリセット.

ステップ#5:MySQLサーバーを終了して再起動します。

各ステップで入力する必要があるコマンドは次のとおりです(rootユーザーとしてログインします)。

ステップ#1:mysqlサービスを停止する

# /etc/init.d/mysql stop

出力:

Stopping MySQL database server: mysqld.

ステップ#2:パスワードなしでMySQLサーバーを起動します:

# mysqld_safe --skip-grant-tables &

出力:

[1] 5988
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6025]: started

ステップ#3:mysqlクライアントを使用してmysqlサーバーに接続します:

# mysql -u root

出力:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

ステップ#4:新しいMySQLルートユーザーパスワードのセットアップ

mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit

ステップ#5:MySQLサーバーを停止します:

# /etc/init.d/mysql stop

出力:

Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+  Done                    mysqld_safe --skip-grant-tables

ステップ#6:MySQLサーバーを起動してテストする

# /etc/init.d/mysql start
# mysql      
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 
# mysql -u root -p

ソース: http://www.cyberciti.biz/tips/recover-mysql-root-password.html

14

私と「5.7.11 MySQL Community Server」のために働いた:

use mysql;
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';

「plugin」フィールドも「auth_socket」に設定されていたため、変更する必要がありました。

その後、パスワードなしでmysql -u rootとして接続できました。

83

空のパスワードが必要な場合は、パスワードをnullに設定し、パスワードハッシュ関数を使用しないようにしてください。

コマンドラインで:

Sudo service mysql stop
Sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -uroot

MySQLの場合:

use mysql;
update user set password=null where User='root';
flush privileges;
quit;
54
user64141
  • ユーザーrootとしてmysqlに接続します(次の2つの方法のいずれかを使用します)
    • ルートとしてログインし、_mysql -p_を使用してmysqlを起動し、現在のルートパスワードを入力します
    • 自分としてログインし、_mysql -u root -p_を使用してmysqlを起動し、現在のルートパスワードを入力します
  • mysql> set password = password('');

できた!ルートパスワードはありません。

51
bsd
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('');
20
kta

これは、v5.7.15 MySQLを使用するUbuntu 16.04で機能しました。

まず、mysql-clientがインストールされていることを確認してください(Sudo apt-get install mysql-client)。

ターミナルを開いてログインします。

mysql -uroot -p

(パスワードを入力します)

その後:

use mysql;
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';

(tnx @Stanislav Karakhanov)

最後の重要なことはmysqlサービスをリセット

Sudo service mysql restart

これで、MySQL Workbenchを使用しても(パスワードなしで)ログインできるようになります。

14
djordjea

mysqlデータベースを直接編集することはお勧めできません。

私は次の手順を好む:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY ''; 
mysql> flush privileges;
5
Zendo June

MySQL 8.0の場合:

SET PASSWORD FOR 'root'@'localhost' = '';

5
Nicolas Rivas

これはMySQL 8.0.13からのものです。

use mysql;

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

quit;
1
bitfishxyz

わたしにはできる。

ALTER USER 'root' @ 'localhost' mysql_native_passwordで 'password'で識別

1
user9903233

User64141による回答

use mysql;
update user set password=null where User='root';
flush privileges;
quit;

mariaDB 10.1.5では機能しませんでした(MySQLの代わりになるものと思われます)。アップストリームの変更であるかどうかをMySQL 5.6でテストしていませんが、私が得たエラーは次のとおりです。

エラー1048(23000):列「パスワード」はnullにできません

しかし、nullを空の一重引用符または二重引用符で置き換えるとうまくいきました。

update user set password='' where User='root';

または

update user set password="" where User='root';
1
user3430227

MySQL 5.7の私のバリアント:

サービスmysqlを停止します。

$ Sudo service mysql stop

セーフモードでの実行:

$ Sudo mysqld_safe --skip-grant-tables --skip-networking

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

新しいターミナルウィンドウを開きます。

$ mysql -u root

$ mysql use mysql;

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

$ mysql update user set plugin="mysql_native_password" where User='root';

$ mysql flush privileges;
$ mysql quit;

Mysqlサービスを実行します。

$ Sudo service mysql start
0
Elena

mysqlの5.6以降のバージョンをインストールしたため

解決策

1. mysqlバージョンソリューションを低下させることができます

2認証をネイティブタイプまたはレガシータイプの認証に再構成する
configureオプション

0

私はnodejsとwindows 10を使用しています。2つの答えの組み合わせがうまくいきました。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY ''; 
mysql> flush privileges;

に続く:

restart;

これがまだ問題を抱えている他の人に役立つことを願っています。

0
Kaushik

パスワードなしでmysqlに接続する場合:

mysql -p SET PASSWORD = ""

https://dev.mysql.com/doc/refman/5.7/en/set-password.html

0
Tom DE RUDDER

あなたのルートパスワードを知っていて、それをリセットしたい場合は、次のようにしてください:

  • [コントロールパネル]> [管理ツール]> [サービス]からMySQLサービスを開始します。 (以前に停止された場合のみ!それ以外の場合は、このステップをスキップしてください)

  • MySQL Workbenchを起動します

  • このコマンド/ SQL行を入力してください

    ALTER USER 'root' @ 'localhost' PASSWORD EXPIRE;

他のユーザーパスワードをリセットするには、rootではなく他のユーザー名を入力します。

0
Hamid Faisal

構文はバージョンによってわずかに異なります。こちらのドキュメントから: https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

MySQL 5.7.6以降:

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

MySQL 5.7.5以前:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('');
0
nofunatall

上記のソリューションのいくつかは現在廃止されていることに気付きました。

空のパスワードを設定するには、次の手順に従ってください。

mysql -u root -p

use mysql

SET PASSWORD FOR 'root'@'localhost' = '';

\q (to quit)

now run: mysql -u root

これで、パスワードなしでmysqlを起動できるはずです。

0
Jackie Santana

上記の答えがうまくいかなかったので、ここに自分の2セントを入れたいと思いました。 CentOS 7、mysqlコミュニティv8では、シェルはbashです。

正しいコマンドは次のとおりです。

# start mysql without password checking
systemctl stop mysqld 2>/dev/null
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables" &&
systemctl start mysqld

# set default password to nothing
mysql -u root mysql <<- 'EOF'
    FLUSH PRIVILEGES;
    UNINSTALL COMPONENT 'file://component_validate_password';
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
    FLUSH PRIVILEGES;
    INSTALL COMPONENT 'file://component_validate_password';
EOF

# restart mysql normally
systemctl restart mysqld

次に、パスワードなしでログインできます。

mysql -u root
0
Tyler Moore