web-dev-qa-db-ja.com

エラー1045(28000):ユーザ 'root' @ 'localhost'のアクセスが拒否されました(パスワードを使用:YES)

私は電気技師で、プログラミングではなく主に電力システムを使っています。最近、私はUbuntuにソフトウェアスイートをインストールするためのマニュアルに従っています。私は実際にはmySQLの知識が全くありません。私はUbuntuに以下のインストールをしました。

Sudo apt-get update
Sudo apt-get install mysql-server-5.5
Sudo apt-get install mysql-client-5.5
Sudo apt-get install mysql-common
Sudo apt-get install glade
Sudo apt-get install ntp

それから

[email protected]:~/Desktop/iPDC-v1.3.1/DBServer-1.1$ mysql -uroot -proot <"Db.sql"

次のエラーメッセージが表示されました。

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

修正して続行するにはどうすればよいですか。

137
Sibbs Gambling

注: For MySQL 5.7以降 を参照してください @Lahiruからの回答 この質問への回答。それはより最新の情報を含んでいます。

MySQL <5.7の場合:

デフォルトのrootパスワードはrootではなく空白(空の文字列)です。だからあなたはただのようにログインすることができます:

mysql -u root

インストール後に明らかにあなたのrootパスワードを変更するべきです

mysqladmin -u root password [newpassword]

ほとんどの場合、DBを使って作業する前に、個々のユーザーアカウントも設定する必要があります。

122
Mike Brant

私はこの文を実行することでこの問題を解決することができました

Sudo dpkg-reconfigure mysql-server-5.5

これはrootのパスワードを変更します。

111
Divz

パスワードを再設定する必要があります。 mac osx(テスト済みおよび動作中)およびubuntu用の手順

を使用してMySQLを停止する

Sudo service mysql stop

または

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

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

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

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

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

$ mysql -u root

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

@ IberoMediaのコメントによると、新しいバージョンのMySQLでは、このフィールドはauthentication_stringと呼ばれます。

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

MySQLを起動します。

Sudo service mysql start

または

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

あなたの新しいパスワードは 'password'です。

62
tk_

それでも問題が解決しない場合はパスを強制的に変更してみてください。

/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &

mysql -u root

新しいMySQL rootユーザーパスワードを設定する

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

MySQLサーバーを停止します。

/etc/init.d/mysql stop

MySQLサーバーを起動してテストします。

mysql -u root -p
30
Yasin Hassanien

サーバーのデータディレクトリが空の場合、サーバーの最初の起動時に次のことが起こります。

  • サーバーが初期化されました。
  • SSL証明書とキーファイルがデータディレクトリに生成されます。
  • Validate_passwordプラグインがインストールされて有効になります。
  • スーパーユーザーアカウント 'root' @ 'localhost'が作成されます。スーパーユーザーのパスワードが設定され、エラーログファイルに保存されます。

それを明らかにするには、次のコマンドを使用します。

Shell> Sudo grep 'temporary password' /var/log/mysqld.log

生成された一時パスワードを使用してログインし、スーパーユーザーアカウント用のカスタムパスワードを設定して、できるだけ早くrootパスワードを変更します。

Shell> mysql -uroot -p 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 
22
Lahiru

私はこれが古い質問だと知っていますが、これは誰かに役立つかもしれないと感じます。私は最近同じ問題に直面しましたが、私の場合、私は自分のパスワードを大丈夫に覚えていますがそれは私に同じエラーを与え続けました。私は非常に多くの解決策を試してみましたがそれでも私はこれを試してみましたどれも助けにはならなかった

mysql -u root -p 

その後、このようなパスワードをあなたに尋ねます

Enter password: 

それから私は私が使用したパスワードを入力しました。それで全部です

20
XY-JOE

あなたのパスワードがなくなったときに起こります。

忘れたときにパスワードを変更する手順

  1. MySQLサーバーを停止します(Linuxの場合)。

    Sudo systemctl stop mysql
    
  2. 付与テーブルをロードしたり、ネットワークを有効にしたりしないでデータベースを起動します。

    Sudo mysqld_safe --skip-grant-tables --skip-networking &
    

    このコマンドの最後にあるアンパサンドは、このプロセスを
    backgroundなので、引き続き端末を使用して#mysql -u rootを実行できるので、パスワードの入力は求められません。

    以下のようなエラーになったら:

    2018-02-12T08:57:39.826071Z UNIX用のmysqld_safeディレクトリ '/ var/run/mysqld'
    ソケットファイルが存在しません。 mysql -u root ERROR 2002(HY000):ソケット経由でローカルMySQLサーバーに接続できない
    '/ var/run/mysqld/mysqld.sock'(2)[1] +終了1

  3. MySQLサービスディレクトリを作成します。

    Sudo mkdir /var/run/mysqld
    

    MySQLユーザーにサービスディレクトリへの書き込み権限を与えます。

    Sudo chown mysql: /var/run/mysqld
    
  4. Mysqlをバックグラウンドで実行するには、手順2と同じコマンドを実行します。

  5. Mysql -u rootを実行すると、パスワードを入力せずにmysqlコンソールが表示されます。

    これらのコマンドを実行する

    FLUSH PRIVILEGES;
    

    MySQL 5.7.6以降の場合

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

    MySQL 5.7.5以前の場合

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

    ALTER USERコマンドが機能しない場合は、次のようにします。

    UPDATE mysql.user SET authentication_string = PASSWORD('new_password')     WHERE User = 'root' AND Host = 'localhost';
    

今終了

  1. 手動で起動したインスタンスを停止する

    Sudo kill `cat /var/run/mysqld/mysqld.pid`
    
  2. Mysqlを再起動します

    Sudo systemctl start mysql
    
19

Ubuntu-16.04を使用しています:mysqlをインストールしました - 5.7。私は同じ問題を抱えていた:ログインはrootユーザーのために拒否されました。

以下のステップを試してみました:

  1. dpkg --get-selections | grep mysql(mysqlのバージョンを取得するため)。

  2. dpkg-reconfigure mysql-server-5.7

  3. mysql -u root -p

-pを指定しないと、パスワードの入力を要求されません。入室したら、次の手順でパスワードを使ってユーザーを作成できます。

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

ルートから出て、上記で与えたものからログインします。

mysql -u <your_new_username> -p

何らかの理由でそれでもmysqlを入力するだけではうまくいきません。 AT ALL。 mysql -u <name> -pを使う習慣にすることをお勧めします。

10
Nikhil Rushmith

私はこの非常に厄介な問題に出くわし、うまくいかない多くの答えを見つけました。私が遭遇した最良の解決策は、mysqlを完全にアンインストールしてそれを再インストールすることでした。再インストール時にrootパスワードを設定すると問題が解決しました。


Sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
Sudo rm -rf /etc/mysql /var/lib/mysql
Sudo apt-get autoremove
Sudo apt-get autoclean

私はそれを信用しないように私は他の所でこのコードを見つけた。しかしそれはうまくいきます。アンインストールした後にmysqlをインストールするには、Digital Oceanに良いチュートリアルがあると思います。私の要旨をチェックしてください。
https://Gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096

6
JamesD

公式ドキュメントを読んでください: Mysql:rootパスワードをリセットする方法

端末にアクセスできる場合

MySQL 5.7.6以降:

$ mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5以前:

$ mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
5
d.danailov

Mac OSXでmysql-5.7.12-osx10.11-x86_64.dmgを使用しています

インストールプロセスにより、rootユーザー用の一時パスワードが自動的に設定されます。パスワードを保存してください。パスワードを回復できません。

指示に従う

  1. cd /usr/local/mysql/bin/に行く
  2. 一時パスワードを入力します( "tsO07JF1 => 3"のようになります)。
  3. Mysql> Promptが表示されるはずです。
  4. 実行、SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}');あなたがあなたのパスワードを設定したいなら: "root"それからコマンドはSET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');になるでしょう
  5. ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;を実行
  6. exitを実行する
  7. ./mysql -u root -pを実行
  8. パスワードを入力してください。私の場合は「root」と入力します(引用符は含みません)。
  9. それで全部です。

便宜上、PATHに"/usr/local/mysql/bin"を追加してください。

これでどこからでも./mysql -u root -pを入力してからパスワードを入力するとmysql> Promptが表示されます。

それが役に立てば幸い。

3
tausiq

答えは愚かに聞こえるかもしれませんが、時間を無駄にした後、これは私がそれを機能させる方法です

mysql -u root -p

エラーメッセージが出ました

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

私は正しいパスワード(あなたが最初にmysqlをインストールしたときにあなたが得る一時的なパスワード)をタイプしていたとしても

I パスワードプロンプトが点滅しているときにパスワードを入力したときに正しく表示された

3
Amit Kumar

それでも問題が解決しない場合はパスを強制的に変更してみてください。

MySQLサーバーを停止します(Linuxの場合)。

/etc/init.d/mysql stop

MySQLサーバーを停止します(Mac OS Xの場合)。

mysql.server stop

--skip-grant-tablesを使用してmysqld_safeデーモンを起動します。

mysqld_safe --skip-grant-tables &
mysql -u root

新しいMySQL rootユーザーパスワードを設定する

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

MySQLサーバーを停止します(Linuxの場合)。

/etc/init.d/mysql stop

MySQLサーバーを停止します(Mac OS Xの場合)。

mysql.server stop

MySQLサーバーサービスを起動し、rootでログインするようにテストします。

mysql -u root -p
2
Max Yao

ただターミナルに入る

mysql -u root -p。それはあなたにパスワードを尋ねるよりも

1
Vahap Gençdal

たった1行で、私の問題は解決しました。

Sudo dpkg-reconfigure mysql-server-5.5
1

Ubuntu 16.04(MySQLバージョン5.7.13)では、以下の手順で問題を解決できました。

  1. セクションB.5.3.2.2ルートパスワードの再設定の手順に従ってください。UnixおよびUnixライクシステム MySQL 5.7リファレンスマニュアル

  2. #Sudo mysqld_safe --init-file =/home/me/mysql-initを試したところ、失敗しました。エラーは/var/log/mysql/error.logにありました

    2016-08-10T11:41:20.421946Z 0 [注意] init_file '/ home/me/mysql/mysql-init'の実行が開始されました。 2016-08-10T11:41:20.422070Z 0 [エラー]/usr/sbin/mysqld:ファイル '/ home/me/mysql/mysql-init'が見つかりません(エラーコード:13 - 権限が拒否されました)2016-08-10T11: 41:20.422096Z 0 [エラー]中止中

Mysql-initのファイル許可は問題ありませんでした、apparmor許可を編集する必要があります

  1. #Sudo vi /etc/apparmor.d/usr.sbin.mysqldで編集します。

    ....
      /var/log/mysql/ r,
      /var/log/mysql/** rw,
    
    
    # Allow user init file
      /home/pranab/mysql/* r,
    
      # Site-specific additions and overrides. See local/README for details.
      #include <local/usr.sbin.mysqld>
    }
    
  2. #Sudo /etc/init.d/apparmor reloadを実行します。

  3. もう一度mysqld_safeを起動して、上記の手順2を試してください。 /var/log/mysql/error.logを調べて、エラーがなく、mysqldが正常に起動されていることを確認してください。

  4. #mysql -u root -pを実行します。

    パスワードを入力する:

Mysql-initで指定したパスワードを入力してください。これでrootとしてログインできるはずです。

  1. #Sudoでmysqld_safeをシャットダウンします。mysqladmin -u root -p shutdown

  2. #Sudo systemctl start mysqlでmysqldを通常どおりに起動します。

1
codegen

あなたが他の答えで言われているコマンドを入力しているけれどもこれがまだこのエラーを得るならば、これはうまくいくでしょう:

mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
[1]+  Exit 1                  Sudo mysqld_safe --skip-grant-tables

パスワードを再設定するまで、以下のコマンドを順に実行してください。

# Stop Your Server First
Sudo service mysql stop

# Make MySQL service directory.
Sudo mkdir /var/run/mysqld

# Give MySQL permission to work with the created directory
Sudo chown mysql: /var/run/mysqld

# Start MySQL, without permission and network checking
Sudo mysqld_safe --skip-grant-tables --skip-networking &

# Log in to your server without any password.
mysql -uroot mysql


# Update the password for the root user:
UPDATE mysql.user SET authentication_string=PASSWORD('YourNewPasswordBuddy'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';

#if you omit (AND Host='localhost') section, it updates the root pass regardless of its Host

FLUSH PRIVILEGES;
EXIT;

#Now you can use your new password to login to your Server
mysql -uroot -p
1
Mehdi

まだパスワードを設定していない場合は、mysql -urootを実行してください、それは私のために動作します。

0
ahbon

私は同様の問題を抱えていました:

エラー1045(28000):ユーザ 'root' @ 'localhost'のアクセスが拒否されました(パスワードを使用:NO)

しかし、私の場合、その原因は本当にばかげていました。 Word文書からコマンドをコピーしましたが、問題はハイフンにASCII 2Dコードがなく、Unicode E28093がなかったことです。

進入禁止:

mysql -u root –pxxxx

正しい方法:

mysql -u root -pxxxx

どちらも同じように見えますが、同じではありません(パスワードを置き換えてコピーアンドペーストしてみてください)。

この種のエラーに直面した場合は、コピーして貼り付ける代わりにコマンドを入力してみることをお勧めします。

0
cesargastonec

Macでは、あなたがインストールで与えられた最初のパスワードでログインするのに問題があるなら、多分あなたは単にmysqlプロセスを強制終了してから試すことができます。

だから:1 - mysqlのPIDを見つけるために次のコマンドを実行します。

ps -aef | grep mysql | grep -v grep

2 - プロセスを殺す:

kill -15 [process id] 

その後、このコマンドを使用して初期パスワードでログインできます。

mysql -uroot -p

パスワードの入力を求められます。初期パスワードを入力するだけです。

0
Maryam Zakani

デフォルトではパスワードはnullになるので、以下の手順でパスワードを変更する必要があります。

mySQLに接続する

root#mysql

Mysqlを使う

mysql> update user set password = PASSWORD( 'root')ここで、User = 'root';最後に、権限を再読み込みします。

mysql>フラッシュ特権。 MySQL>終了

0
Rizwan Basheer

私は@Lahiruによって正しい答えを試してみましたが、macOS Mojave上のMySQLサーバーバージョン8.0.16(Community)では動作しませんでした。

上記のSameer Choudharyの指示に従い、いくつか調整を加えて、rootパスワードを変更し、localhostからのrootアクセスを有効にすることができました。

更新:あなたがhomebrewを使ってMac OSにインストールしているならば、これらすべては必要ではない: "brew install mysql"

0
cspider

最近のMySQLバージョンではmysql.userテーブルにpasswordはありません。

だからあなたはALTER USERを実行する必要があります。この1行のコマンドをファイルに入れてください。

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

そしてinitファイルとして(rootまたはmysqlユーザーとして)実行してください。

mysqld_safe --init-file=/home/me/mysql-init &

mysqld_safeを起動するにはMySQLサーバーを停止する必要があります。

また、このinitファイルをロードするためのapparmor権限に問題がある可能性があります。ここにもっと読む https://blogs.Oracle.com/jsmyth/entry/apparmor_and_mysql

0