MySQLのroot
ユーザーのパスワードをnull
に変更するにはどうすればよいですか-パスワードなしまたは''
-MySQLコマンドラインクライアントから?
次の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
私と「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
として接続できました。
空のパスワードが必要な場合は、パスワードを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;
mysql -p
_を使用してmysqlを起動し、現在のルートパスワードを入力しますmysql -u root -p
_を使用してmysqlを起動し、現在のルートパスワードを入力しますmysql> set password = password('');
できた!ルートパスワードはありません。
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('');
これは、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を使用しても(パスワードなしで)ログインできるようになります。
mysql
データベースを直接編集することはお勧めできません。
私は次の手順を好む:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '';
mysql> flush privileges;
MySQL 8.0の場合:
SET PASSWORD FOR 'root'@'localhost' = '';
これはMySQL 8.0.13からのものです。
use mysql;
update user set authentication_string=null where user='root';
quit;
わたしにはできる。
ALTER USER 'root' @ 'localhost' mysql_native_passwordで 'password'で識別
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';
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
mysqlの5.6以降のバージョンをインストールしたため
解決策
1. mysqlバージョンソリューションを低下させることができます
2認証をネイティブタイプまたはレガシータイプの認証に再構成する
configureオプション
私はnodejsとwindows 10を使用しています。2つの答えの組み合わせがうまくいきました。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '';
mysql> flush privileges;
に続く:
restart;
これがまだ問題を抱えている他の人に役立つことを願っています。
パスワードなしでmysqlに接続する場合:
mysql -p SET PASSWORD = ""
あなたのルートパスワードを知っていて、それをリセットしたい場合は、次のようにしてください:
[コントロールパネル]> [管理ツール]> [サービス]からMySQLサービスを開始します。 (以前に停止された場合のみ!それ以外の場合は、このステップをスキップしてください)
MySQL Workbenchを起動します
このコマンド/ SQL行を入力してください
ALTER USER 'root' @ 'localhost' PASSWORD EXPIRE;
他のユーザーパスワードをリセットするには、rootではなく他のユーザー名を入力します。
構文はバージョンによってわずかに異なります。こちらのドキュメントから: 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('');
上記のソリューションのいくつかは現在廃止されていることに気付きました。
空のパスワードを設定するには、次の手順に従ってください。
mysql -u root -p
use mysql
SET PASSWORD FOR 'root'@'localhost' = '';
\q (to quit)
now run: mysql -u root
これで、パスワードなしでmysqlを起動できるはずです。
上記の答えがうまくいかなかったので、ここに自分の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