web-dev-qa-db-ja.com

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

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

apt-get install phpmyadminから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)、EditLineラッパーを使用

62

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

つまり、phpMyAdminはnotroot資格情報を使用できます。

最も単純で安全なpermanentソリューションは、新しいユーザーを作成し、必要な特権を付与します。

1. mysqlに接続します

Sudo mysql --user=root mysql

2. 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に接続している場合、これで十分です。

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

覚えておく:リモートユーザーにすべての特権を持たせることはセキュリティ上の問題であり、これはほとんどの場合に必要ですnotが必要です。

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

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

4. 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'
123

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

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

10
Dan Costinel

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/

6
billynoah

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;
6

完全を期すために、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;

よろしく

3
FIRE FOX

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

私はユーザーとしてrootを使用していましたが、私が知っていたパスワードは正しいものでした。そして、私は

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

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

2
plutesci

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

はい、彼の解決策は機能し、私は他の人を試しました。ただし、/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を閉じている場合、必ずしもセキュリティ上のリスクが生じるとは限りません。

以下のコードのみが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ユーザーのみがフルアクセスを取得します。

0
Hemamalini