Ubuntuで[MySQL](https://cloud.tencent.com/product/cdb?from=10680)パスワードを変更するにはどうすればよいですか?収集する方法はおおまかに次のとおりですが、より一般的に使用される方法です。
コンソールにログインします
mysql -uroot -p
パスワードを入力し、 MySQL
を入力します
use mysql;
update user set password=password('123456') where user='root' and host='localhost';
成功しなかったことがわかり、次のエラーが報告されます
ERROR 1054(42S22): Unknown column 'password'in'field list'
つまり、フィールド password
は存在しません。MySQL5.7
の後に password
フィールドがないことがわかります。showcreatetableuser
を使用して表示します。
user | CREATE TABLE `user`(`Host`char(60) COLLATE utf8_bin NOT NULL DEFAULT '',`User`char(32) COLLATE utf8_bin NOT NULL DEFAULT '',`Select_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Insert_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Update_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Delete_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Create_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Drop_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Reload_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Shutdown_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Process_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`File_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Grant_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`References_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Index_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Alter_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Show_db_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Super_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Create_tmp_table_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Lock_tables_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Execute_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Repl_slave_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Repl_client_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Create_view_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Show_view_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Create_routine_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Alter_routine_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Create_user_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Event_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Trigger_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`Create_tablespace_priv`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`ssl_type`enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',`ssl_cipher` blob NOT NULL,`x509_issuer` blob NOT NULL,`x509_subject` blob NOT NULL,`max_questions`int(11) unsigned NOT NULL DEFAULT '0',`max_updates`int(11) unsigned NOT NULL DEFAULT '0',`max_connections`int(11) unsigned NOT NULL DEFAULT '0',`max_user_connections`int(11) unsigned NOT NULL DEFAULT '0',`plugin`char(64) COLLATE utf8_bin NOT NULL DEFAULT 'mysql_native_password',`authentication_string` text COLLATE utf8_bin,`password_expired`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',`password_last_changed` timestamp NULL DEFAULT NULL,`password_lifetime`smallint(5) unsigned DEFAULT NULL,`account_locked`enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
PRIMARY KEY(`Host`,`User`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'
新しいバージョンの MySQL
は、 password
の代わりに authentication_string
を使用します。フィールドがわかったので、パスワードを変更します。
update user set authentication_string=PASSWORD("変更したいパスワードをここに入力してください") where user='root';
flush privileges;
わかりました。MySQLパスワードは正常に変更されました。
上記の方法の前提は、元のパスワードを覚えていればMySQLにログインできるということですが、パスワードを忘れた場合に変更するにはどうすればよいですか?
/ etc / mysql / mysql.conf.d / mysqld.cnf
ファイルを編集し、[mysqld]領域に skip-grant-tables
構成を追加します
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf;
次に、MySQLサービスを再起動します
sudo service mysql restart
その後、パスワードなしでMySQLにログインできます。
mysql -uroot -p
# パスワードを入力し、表示されたらEnterキーを押します
次に、パスワードを変更できます。実際、方法は上記と同じです。
use mysql;
update user set authentication_string=PASSWORD("変更したいパスワードをここに入力してください") where user='root';
flush privileges;
変更後は、必ず skip-grant-tables
を削除してください。次に、MySQLサービスを再起動します。
同様に、構成ファイルを編集して skip-grant-tables
を追加し、MySQLを再起動して、パスワードを空白のままにします
use mysql;
update user set authentication_string='' where user='root';
exit;
ALTER USER "root"@"localhost" IDENTIFIED BY "新しいパスワード";
skip-grant-tables
を削除し、MySQLを再起動します。
mysql -uroot -p;
# パスワードを入力し、表示されたらEnterキーを押します
use mysql;
ALTER USER "root"@"localhost" IDENTIFIED BY "新しいパスワード";
MySQL 8、パスワードルールは強力な検証を使用します。パスワードが単純すぎるとエラーが発生する可能性があります。
Recommended Posts