web-dev-qa-db-ja.com

Ubuntuへの新規インストール後、ユーザー 'root' @ 'localhost'(パスワードを使用:YES)のアクセスが拒否されました

今日私はUbuntu 14.04.1 LTS llにrootとしてログインしました

そしてapt-get install mariadb-server(Sudoなしでrootとして)。

mySQL -h localhost -u root --password=<PW>で手に入れました

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

mySQL -u root -pを使ってDBにログインし、

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<PW>';
FLUSH ALL PRIVILEGES;

しかし、これは役に立ちませんでした。何か考えがありますか。私は同様の質問に対する答えを見つけられませんでした。

84
SQL-Neuling

TL; DR:新しいバージョンのインストール後、rootユーザーとしてmysql/mariadbの新しいバージョンにアクセスするには、rootシェルにいる必要があります(すなわち、Sudo mysql -u rootまたはmysql -u rootが最初に始まるシェル内のsu -またはSudo -i


Ubuntuでも同じアップグレードを行ったところ、同じ問題が発生しました。

奇妙なことはそれでした

Sudo /usr/bin/mysql_secure_installation

自分のパスワードを受け入れて、それを設定することを許可しますが、rootname__クライアントを介してmysqlname__としてログインできませんでした

私はmariadbを始めなければなりませんでした

Sudo mysqld_safe --skip-grant-tables

rootとしてアクセスするために、他のすべてのユーザーはまだ問題なくアクセスできます。

私がrootに気付いたmysql.userテーブルを見ると、pluginname__列はunix_socketに設定されていますが、他のすべてのユーザーはそれが 'mysql_native_password'に設定されています。このページをちょっと見てください。 https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ は、uidname__と一致させることで、Unix Socketがログインを可能にすることを説明しています。 mysql.userテーブル内のユーザーのプロセスでクライアントを実行しているプロセスのプロセスつまり、rootname__としてmariadbにアクセスするには、rootとしてログインする必要があります。

認証が必要な状態でmariadbデーモンを十分に再起動してください。

Sudo mysql -u root -p

または

Sudo su -
mysql -u root -p

これをやった後、私はSudoをしなくてもアクセスする方法について考えました、それはこれらのmysqlクエリを実行することの問題です

GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;

<password>を希望のmysql rootパスワードに置き換えます)。これにより、rootユーザーのパスワードログインが有効になりました。

あるいは、mysqlクエリを実行します。

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;

パスワードを変更せずにパスワードログインを使用するようにrootアカウントを変更しますが、これによりrootパスワードが設定されていないmysql/mariadbインストールが残る可能性があります。

これらのどちらかの後、あなたはmysql/mariadbを再起動する必要があります。

Sudo service mysql restart

そして私の個人アカウントからmysql -u root -p経由でアクセスできた

このISセキュリティを減らすことに注意してくださいおそらくMariaDB開発者は、正当な理由でこのようにrootアクセスをすることを選んだのでしょう。

考えてみるとSudo mysql -u root -pにしなければならないのでとても嬉しいので、それに切り替えていますが、他に解決策が見つからないので自分のソリューションを投稿することにしました。

208
DorianFM

クリーンなUbuntu 16.04 LTSでは、MariaDB root login localhostがパスワードスタイルからSudoログインスタイルに変更されました...

そう、ちょうどする

Sudo mysql -u root

パスワードでログインしたいので、別のユーザー「user」を作成します。

mariaDBコンソールで...( 'Sudo mysql -u root'でMariaDBコンソールに入ります)

use mysql
CREATE USER 'user'@'localhost' IDENTIFIED BY 'yourpassword';
\q

それからbashシェルプロンプトで、

mysql-workbench

そしてあなたはlocalhostの 'yourpassword'を使って 'user'でログインすることができます

33
Curycu

コマンドを試してください

Sudo mysql_secure_installation

enterキーを押して、mysql/mariadbrootに新しいパスワードを割り当てます。

あなたがのようなエラーが発生した場合

エラー2002(HY000):ソケット '/var/run/mysqld/mysqld.sock'を介してローカルのMySQLサーバーに接続できません

でサービスを有効にする

service mysql start

で再入力した場合

mysql -u root -p

問題が解決しない場合はSudo suで入力し、mysql -u root -prootに権限を適用するようになりました

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<password>';

これでMariaDBの問題が解決しました。

がんばろう

7
IsraelM17

RootとしてMariadbにアクセスするには、rootとしてUbuntuにログインする必要がありました。それはあなたが最初にインストールするときにそれをするようにあなたに促すという「ハルデン...」と関係があるかもしれません。そう:

$ Sudo su
[Sudo] password for user: yourubunturootpassword
# mysql -r root -p
Enter password: yourmariadbrootpassword

そしてあなたは中にいる.

3
Joe C

私はかつて同様の問題を抱えていました。私の場合は、MySQLサーバーのユーザーテーブルが何らかの理由で破損したために発生しました。

この記事は私を助けました: mysql-how-to-fix-access-denied-for-user-'-root' @ 'localhost'

基本的にはrootユーザーをリセットする必要があります。

2
fishi

特権をフラッシュするための新しいコマンドは次のとおりです。

FLUSH PRIVILEGES

古いコマンドFLUSH ALL PRIVILEGESはもう機能しません。

次のようなエラーが表示されます。

MariaDB [(none)]> FLUSH ALL PRIVILEGES; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ALL PRIVILEGES' at line 1

お役に立てれば :)

1
Sylvain

スーパーユーザーから 受け入れられた回答

Sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;
0
sailfish009

Mysql_upgradeを実行してください。

それを確認します

SHOW GRANTS FOR 'root'@'localhost';

と言う

GRANT ALL PRIVILEGES ON ... WITH GRANT OPTION 

テーブルが_mysql.proxies_priv_存在することを確認してください。

特権を付与しようとしているときに、ユーザー 'root' @ 'localhost'のアクセスが拒否されました。特権を付与するにはどうすればよいですか?

0
Interlated

Ubuntuのようなシステムはauth_socketプラグインを使うことを好みます。 DB内のユーザー名とmysqlリクエストを作成するプロセスを比較して認証を試みます。それは ここ で説明されています

ソケットプラグインは、ソケットユーザー名(オペレーティングシステムのユーザー名)がクライアントプログラムによってサーバーに指定されたMySQLユーザー名と一致するかどうかをチェックし、一致する場合にのみ接続を許可します。

代わりに、mysql_native_passwordを使用して認証を受けることをお勧めします。

それを実現する方法については、代わりに this をお勧めします。

0
Nguyen