MySQLのrootパスワードを見つける方法


167

MySQLのrootパスワードがわかりません。どうすればこれを見つけることができますか?このパスワードが保存されているファイルはありますか?

このリンクをたどっていますが、ローカルにdirectadminディレクトリがありません。


単純なGoogle検索で見つかりました:dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
Arran

11
デフォルトのrootパスワードは-それを待つ- (引用符なし)「ルート」、または全くパスワード(およびそのMySQLサーバで本当にあなた)
ニコラBogdanović

はい、それは私のラップトップ上の私のローカルmysqlサーバーです
Om3ga

それで誰かがこの質問を通過して、それぞれの正しい関連する答えに反対票を投じただけですか?
lanzz

回答:


142

@thusharaKのおかげで、古いパスワードを知らなくてもrootパスワードをリセットできました。

ubuntuでは、次のことを行いました。

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking

次に、新しいターミナルでmysqlを実行します。

mysql -u root

次のクエリを実行してパスワードを変更します。

UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';
FLUSH PRIVILEGES;

MySQL 5.7では、mysql.userテーブルフィールドのパスワードフィールドが削除され、フィールド名は「authentication_string」になりました。

mysqlセーフモードを終了し、mysqlサービスを次のように開始します。

mysqladmin shutdown
sudo service mysql start

24
mysqladmin -u root -p shutdown新しいパスワードでを使用する必要がありました。
SLバース-2014

2
特に素晴らしい命令フロー:新しい端末でmysqlを実行します
Mohammed Subhi Sheikh Quroush 2015年

8
これはできないmysql -u root。エラーが表示されますAccess denied
Avinash Raj

4
@AvinashRaj:これを試してください:sudo mysql -u root
Allen Gingrich

驚くばかり。私はRHEL 7で何が機能したかを理解しています:ターミナル1:sudoサービスmysql stop sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networkingターミナル2:mysql -u root UPDATE mysql.user SET Password = PASSWORD ( '新しいパスワード')WHERE User = 'root'; FLUSH PRIVILEGES; mysqladmin -u root -p shutdown注:mysqladminをシャットダウンすると、ターミナル1でセーフモードが終了するのが確認できます。
StackOverFlowユーザー

65

ハッシュ化されたパスワードは表示できません。あなたができる唯一のことはそれをリセットすることです!

MySQLを停止します。

sudo service mysql stop

または

$ 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 5.7以降:

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

MySQLを起動します。

sudo mysql start

または

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

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


sudo /usr/local/mysql/support-files/mysql.server stop sudo:/usr/local/mysql/support-files/mysql.server:command not found
Isuru

この場合はどうしますか?
Isuru

mysqlが正しくインストールされていないようです。正しくアンインストールして再インストールしてください。
tk_

どうもありがとう。私mysql_secure_installationと何かがおかしくなり、 ルートはもう協力していませんでした。authentication_string設定は何をしますか?
意志

3
再起動するにmysqladmin -u root -p shutdownは、新しいパスワードで試してくださいsudo service mysql start
forumulator

37

MySQL 5.7以降では、MySQLログファイルにルートが保存されます。

これを試してください:

sudo grep 'temporary password' /var/log/mysqld.log

私の場合、パスワードはここにありませんでした。ただし、代わりに、/var/log/mysql/error.logルートパスワードが空であることに関する警告が含まれていました。そのため、このような方法で1日を節約できました:)
Janaka Bandara

19

mySQLの新規インストールでつまずき、なぜデフォルトのパスワードが機能しなかったのか、resetメソッドでさえ機能しないのではないかと思いました。Ubuntu 18では、mysqlサーバーの最新バージョンは、デフォルトでrootユーザーに対してパスワード認証をまったく使用しないことがわかりました。つまり、何を設定してもかまいません。使用することはできません。特権ソケットからログインすることを期待しています。そう

mysql -u root -p

正しいパスワードを使用していても、まったく機能しません!!! 何を入れてもアクセスは拒否されます。

代わりに使用する必要があります

sudo mysql

パスワードなしで動作します。その後、あなたが入力したら、入力する必要があります

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password you want to use';

次にログアウトすると、流血のものが最終的にパスワードを受け入れます


17

あなたはそれを見つけることができません。これはデータベースに格納されており、アクセスするにはrootパスワードが必要です。何らかの方法でアクセスした場合でも、一方向ハッシュでハッシュされます。あなたはそれをリセットすることができます:http : //dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html


14

次の手順に従って、Windowsシステムでパスワードをリセットします

  1. タスクマネージャーからMysqlサービスを停止する

  2. テキストファイルを作成し、以下のステートメントを貼り付けます

MySQL 5.7.5以前:

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


MySQL 5.7.6以降:

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

  1. 保存mysql-init.txtし、それを置きます'C' drive

  2. コマンドプロンプトを開き、以下を貼り付けます

C:\> mysqld --init-file=C:\\mysql-init.txt


2
これは命の恩人、素晴らしいヒントでした!
Nicholas Kreidberg、2016年

Centos7で働いたmysqld --init-file=/root/m.txt。上記のコマンドSET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');/root/m.txt
Damodar Bashyal

8

パッケージマネージャーがインストール中にルートパスワードの入力を要求しない限り、デフォルトのルートパスワードは空の文字列です。新しくインストールしたサーバーに接続するには、次のように入力します。

shell> mysql -u root --password=
mysql>

パスワードを変更するには、UNIXシェルに戻り、次のように入力します。

shell> mysqladmin -u root --password= password root

新しいパスワードは「root」です。次にサーバーに接続します。

shell> mysql -u root --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

パスワードが変更されました。新しいものを使用してくださいroot

shell> mysql -u root --password=root
...
blah, blah, blah : mysql welcome banner
...
mysql> 

ビンゴ!新しい何か面白いことをする

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

モーリシー


1
現在、デフォルトでは、パスワードではなく認証済みソケットを使用しています。したがって、パスワードを変更するだけではもはや十分ではありません。
Kit Ramos

7

他の回答に加えて、cpanelインストールでは、mysqlのrootパスワードはという名前のファイルに保存されます/root/.my.cnf。(そしてcpanelサービスは変更時にリセットするので、ここでの他の答えは役に立ちません)


6

あなたはmysqlのルートパスワードを見ることができます、私はmysql 5.5でそれを試しましたので、他の新しいバージョンがうまく機能しているかどうかわかりません

nano ~/.my.cnf

4

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

端末で次のように入力します

$ sudo mysql -u root -p

password://を入力してEnterキーを押すだけ

mysql>


mysqlサーバーがデフォルトでパスワード認証を使用していないようです。ログイン方法を変更するまでは、mysqlクライアントをスーパーユーザー(sudo)として起動してアクセスを取得する必要があります。
Kit Ramos

4

mysqlサーバーのインストール直後に機能したデフォルトのパスワードは次のとおりです。 mysql


2
多分彼は質問に答えなかったかもしれませんが、ここに来る多くの人々はそれが彼らの問題を解決するのを見つけるかもしれません。
Ohad Cohen

3

MySqlのバージョンによって手順が異なります。ご使用のバージョンについて説明されているとおりに手順を実行します。

  • ヒント-お使いのバージョンのMySql *の説明ページの前にお読みください

  • ステップ5:CMDを実行する代わりに、CDM.exeを呼び出すショートカットをデスクトップに作成します。次に、ショートカットを右クリックして、[管理者として実行]を選択します。

  • ステップ6:コマンドの最初の提案されたバージョンをスキップし、2番目のバージョンを実行します---defaults-fileパラメーターを使用したバージョン

  • コマンドを実行した後、問題がなければ、CMDウィンドウは開いたままで、手順6のコマンドの実行が続行されます。ウィンドウを閉じる([x]をクリックする)だけで、タスクマネージャーからMySQlを強制的に閉じます。

  • SQLコマンドでファイルを削除し、MySQLを再起動します。ここでパスワードを変更する必要があります。

5.0 http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

5.1 http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html

...リンクのバージョンを変更するだけ(5.5、5.6、5.7)


3

MySQLが動作するデータフォルダー内の「hostname」.errファイルで、次で始まる文字列を探してみてください。

「roor @ localhostの一時的なパスワードが生成されます」

あなたは使うことができます

less /mysql/data/dir/hostname.err 

次に、スラッシュコマンドの後に、検索する文字列を続けます。

/"A temporary password"

次に、nを押して、次の結果に移動します。



0

システム:

  • CentOS Linux 7
  • mysqlバージョン14.14ディストリビューション5.7.25

手順:

  1. 2つのシェルセッションを開き、1つはLinux rootユーザーとして、もう1つはmysqlコマンドにアクセスできる非rootユーザーとしてログインします。

  2. ルートセッションで、通常のmysqldリスナーを停止し、パスワード認証をバイパスするリスナーを開始します(注:これはmysql コマンドへのアクセス権を持つ誰もがパスワードなしでデータベースにアクセスする可能性があるため、重大なセキュリティリスクです。アクティブなシェルセッションを閉じることをお勧めします。および/またはこれを行う前にシェルアクセスを無効にします):

    # systemctl stop mysqld
    # /usr/sbin/mysqld --skip-grant-tables -u mysql &

  3. 非ルートセッションでmysqlにログインし、mysqlルートパスワードを設定します。

    $ mysql
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    Query OK, 0 rows affected, 1 warning (0.01 sec)

    mysql> quit;

  4. ルートセッションで、mysqldのパスワードなしインスタンスを強制終了し、通常のmysqldリスナーをサービスに戻します。

    # kill %1
    # systemctl start mysqld

  5. 非ルートセッションで、上記で設定した新しいルートパスワードをテストします。

    $ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    ...
    mysql>


-2

私はこれを別の方法で解決しました、これは一部にとってはより簡単かもしれません。

セーフモードで起動しようとしたが、エラーで接続できないため、この方法で行いました:ERROR 2002(HY000):Ca n't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'(2)

私がやったことは通常通りルートとして接続することでした:

$ sudo mysql -u root

次に、新しいスーパーユーザーを作成しました。

mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit

次に、myuserとしてログインします。

$ mysql -u myuser -p -h localhost

パスワードを変更しようとしてもエラーは発生しませんでしたが、何もしなかったので、rootユーザーを削除して再作成しました

mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;

rootユーザーは新しいパスワードで作業しています


-5

phpMyAdmin> config.inc.php> $ cfg ['Servers'] [$ i] ['password'] = '';に移動します。


1
についての質問には何もありませんphpmyadmin
ローンの侯爵
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.