phpmyadminをルートとして入力できません(MySQL 5.7)


66

Ubuntuデスクトップ16.04(15.10からアップグレード)を使用しています。

からphpmyadminをインストールしましたapt-get install phpmyadmin。に行っても動作しlocalhost/phpmyadminますが、rootとしてログインできません。

私はそれをたくさん探しました。/etc/phpmyadmin/config.inc.phpユーザーとパスワードを 'root'と ''(パスワードは空)に変更して置き換えることを提案する多くのソースを見つけました。しかし、私config.inc.phpは彼らのものとは異なります。たとえば、私のファイルには、ユーザーとパスワードの行がなく、別のファイルから自動的に取得されるようです/etc/phpmyadmin/config-db.php。それにもかかわらず、私はそのファイルのユーザーとパスワードを変更しましたが、今ではこのエラーが出ます:

#1698 - Access denied for user 'root'@'localhost'

どうすればいいですか?


Phpmyadminバージョン:4.5.4.1deb2ubuntu1
mysql Ver 14.14 Distrib 5.7.12、Linux(x86_64)for EditLine wrapper


どのMySQLバージョンですか?
ラエルグゲルミンクーニャ

質問が更新されました
モスタファアハンガラ

SIMPLE WAY検索ログイン pathword /etc/mysql/debian.cnf - Ubuntuの16.04
CL-R

回答:


127

MySQL 5.7はセキュアモデルを変更しました。MySQL rootログインにはが必要になりましたsudo

つまり、phpMyAdminは資格情報を使用できませんroot

最も簡単で安全かつ永続的なソリューションは、新しいユーザーを作成し、必要な特権を付与することです。

1. mysqlに接続します

sudo mysql --user=root mysql

2.実際のパスワードを作成する

以下の手順ではsome_pass、サンプルパスワードとして使用します。パスワードで置き換えてください!SOME_PASSパスワードとして使用しないでください!

3. phpMyAdminのユーザーを作成します

次のコマンドを実行します(some_pass目的のパスワードで置き換えます)。

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

phpMyAdminがlocalhostに接続している場合、これで十分です。

4.オプションで安全ではない:リモート接続を許可する

覚えておいてください:リモートユーザがすべての権限を持つことができるようにすることは、セキュリティ上の問題であり、これはされていないほとんどの場合必要。

これを念頭に置いて、リモート接続中にこのユーザーに同じ特権を持たせたい場合は、さらに実行します(some_passステップ#2で使用したパスワードで置き換えます)。

CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

5. phpMyAdminを更新する

を使用して、次のセクションのユーザー/パスワード値を更新sudoする/etc/dbconfig-common/phpmyadmin.confファイルを編集します(some_passステップ#2で使用したパスワードで置き換えます)。

# dbc_dbuser: database user
#       the name of the user who we will use to connect to the database.
dbc_dbuser='phpmyadmin'

# dbc_dbpass: database user password
#       the password to use with the above username when connecting
#       to a database, if one is required
dbc_dbpass='some_pass'

2
調査します。その間の回避策として、新しいユーザーを追加し、すべての権限を付与してから、これをphpmyadmin構成ファイルに追加できます。
ラエルグゲルミンクーニャ

9
MySQLがアップグレード後も継続的に破壊を続けることを愛するようになりました。ワークベンチでルートを喜んで使用していましたが、現在、唯一の解決策はコマンドラインで「sudo mysql」、新しいユーザーを作成、すべての同じ権限を付与し、Workbenchで使用することです。愚か。
アンドリス

3
@MostafaAhangarha調査の結果、空のパスワードが許可されていることがわかりましたが、rootユーザーはsudo5.7で常に使用する必要がありました。そのため、すべての特権を持つ新しいユーザーを作成するためのガイドに回答を更新しました。
ラエルグゲルミンクーニャ

3
@Andrisこれにより、人々はより安全な方法でMySQLを使用するようになります。とにかくパスワードなしでデータベースのルートユーザーにログインを許可することは決して良い考えではありません。ローカルの開発マシンでは問題ないかもしれませんが、サーバーでは非常に危険です。
ダン

2
@Dan-それが私の最大の不満です-警告なしでUbuntu 16.04にアップグレードした後、ローカル開発環境が壊れました。私はこのようなものが新しいインストールのデフォルトであることを気にしませんが、少なくともアップデートをインストールする前に尋ねることができます。
アンドリス

10

mariaDBをphpmyadmin(Ubuntu 16.04LTS)で使用すると、同じ問題に直面していました。

前提条件:

1)MariaDBをインストールする

sudo apt-get -y install mariadb-server mariadb-client
sudo mysql_secure_installation (answer to some interactive questions):
    Enter current password for root (enter for none): <enter>
    Set root password: n
    Remove anonymous users: n
    Disallow root login remotely: n
    Remove test database and access to it: n
    Reload privilege tables now: Y

アンインストールする場合mariaDB

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

2)phpmyadminをインストールします

sudo apt-get -y install phpmyadmin (and answer some interactive questions)
    Configuring phpmyadmin:
        Web server to reconfigure automatically: apache2
        Configure database for phpmyadmin with dbconfig-common: Yes
        MySQL application password for phpmyadmin: <blank>

3)apache2で、phpmyadminへのシンボリックリンクを作成します

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin.conf
sudo service apache2 restart

さて、今、ラエルの指示に従うと、ログインできますphpmyadminが、少なくとも私にとっては、赤いメッセージが出たので、新しいデータベースを作成できませんでした:(No privilegesまたは同様のメッセージ)

修正は、phpmyadminを再構成し、いくつかのインタラクティブな質問に答えることによるものでした。

sudo dpkg-reconfigure phpmyadmin
<Ok>
Reinstall database for phpmyadmin: <Yes>
Connection method for MySQL database server for phpmyadmin: TCP/IP
Host name of the MySQL database server for phpmyadmin: localhost
Port number for the MySQL service: 3306
MySQL database name for phpmyadmin: phpmyadmin
<Ok>
MySQL username for phpmyadmin: root
MySQL application password for phpmyadmin: pass  # OR ANY PASSWORD YOU WANT
Password confirmation: pass
Name of the database's administrative user: root
Web server to reconfigure automatically: apache2
An error occurred while installing the database: ignore

ここでphpmyadmin(localhost/phpmyadmin)に接続しようとすると

username: root
password: pass

データベースを作成できるようになります。


1
ご回答ありがとうございます。しかし、全体ではなく最後の部分だけを共有する方が良いと思いませんか?残りはここでは役に立たないと思いますか?
モスタファアハンガラ

@MostafaAhangarhaたぶん投稿は少し長すぎるかもしれませんが、私はいつも答えが与えられる文脈を知りたいです。
ダンコスティネル

実行sudo dpkg-reconfigure phpmyadmin は、mariadbのインストールとmysqlのユニスタリングに接続していますか?「はい」の場合、あなたの情報が役に立つかもしれません(使用しているDBであるmysqlの削除を提案しているためである可能性があります)。そうでなければ、それをコンテキストとして与える意味はありません。私が間違っている場合、私を正してください。
モスタファアハンガラ

2
再構成しただけで、今は動作します。
cwhisperer

ルートアカウントのパスワードを持たないことをお勧めしますか?
kurdtpage

6

Ubuntu 16.04 for Mysql 5.7では、以下の表情報を確認し、必要な設定を実行します。

mysql>  SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | auth_socket           |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
| phpmyadmin       | localhost | mysql_native_password |
| root             | %         | mysql_native_password |
+------------------+-----------+-----------------------+

ルートがauth_socketプラグインを持っているかどうかを確認してから、以下のコマンドを実行します。

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

次のMySQL apt更新まで動作します。つまり、UbuntuでMySQLを更新するたびにこれを適用する必要があります。
ラエルグゲルミンクーニャ

6

phpymadminが接続できない場合、認証メカニズムがに設定されている可能性がありますauth_socket。次のような通常のパスワードを使用するように変更できます。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_password';

Ubuntu 18.04のクリーンインストールでこれに苦労していましたが、これが機能した理由です。ここにもっと説明するまともな記事があります:

https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/


3

完全を期すために、MariadBバージョン10.1.23を使用する際の問題の解決策を見つけました。新しいユーザーをセットアップするために使用する構文は、@ Rael Gugelmin Cunhaから上記の投稿に報告された構文と似ています。同じトラブルに直面している他のユーザーを参照するために、ここにソリューションを置きます。

root@raspberrypi:# sudo mysql --user=root mysql
use mysql;
CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_password';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

よろしく


1
Ask Ubuntuへようこそ!UbuntuはUbuntu専用です。Raspbian(Debianベース)に関する回答は投稿しないでください。
fosslinux

2
@ubashuこのソリューションはRaspbian固有ではなく、MariaDB固有です。
トーマス・ウォード

ありがとう!それでも、新しいデータベースを作成するオプションはありません。
danger89

2

私は同じ問題を抱えていた、私はほとんどのアドバイスに従ったが、それは私のために機能しませんでした!私の問題は、ブラウザーでhttp:// localhost / phpmyadminを開いたときと同じで、ログインの詳細を要求しました。

私が使用していたルートをユーザーとして、私は知っていたパスワードが正しかったです。そして、私は

#1698-ユーザー「root」@「localhost」のアクセスが拒否されました

必要なのは、既知のパスワードを使用しphpmyadminて、ではなくユーザーとして使用することでしrootた。


3
ユーザー名は「phpmyadmin」にする必要がありますか?
モスタファアハンガラ

1
はい、それは私のために働いた
-plutesci

そして、チュートリアルに従った私にとって、パスワードは「some_pass」でした。ありがとう!
マルセロアギル

@MarceloÁgil上記の回答ではsome_pass、実際のパスワードに置き換えるように人々に求めるいくつかの警告を出しました!
ラエルグゲルミンクーニャ

1

ラエルクーニャについて:

はい、彼の解決策は機能し、私は他の人を試しました。ただし、構成ファイルで公開パスワードを持つユーザーを参照することは/etc/dbconfig-common/phpmyadmin.conf、システム全体のアクションのセキュリティ上の欠陥のように見えます。

したがって、私はむしろ何MariaDB 10.1.xが関係するかを提案します(some_userとsome_passはあなたが思いつくかもしれないものです):

# mysql -u root
use mysql;
CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON \*.\* TO 'some_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

phpadmin setup(4)をそのままにします。

その後、自分の資格情報でphpmyadminにログインします

私自身の設定では、セキュリティのために上記の '%'を 'localhost'に置き換えていますが、サーバーでポート3306を閉じている場合、必ずしもセキュリティ上のリスクが生じるとは限りません。


0

以下のコードのみがubuntu 18.04、上記のphp 7およびmysql 5.7で動作します

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

「phpmyadmin」を置き換えないでください。他のユーザーを作成することは、新しいユーザーを作成するような完全な権限を持たず、そのようなユーザーにデータベース権限を割り当てます。phpmyadminユーザーのみがフルアクセスを取得します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.