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ラッパーを使用
MySQL 5.7はセキュアモデルを変更しました。MySQLroot
ログインにはSudo
が必要になりました。
つまり、phpMyAdminはnotroot
資格情報を使用できます。
最も単純で安全なpermanentソリューションは、新しいユーザーを作成し、必要な特権を付与します。
Sudo mysql --user=root mysql
次のコマンドを実行します(some_pass
を目的のパスワードに置き換えます):
CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
PhpMyAdminがlocalhostに接続している場合、これで十分です。
覚えておく:リモートユーザーにすべての特権を持たせることはセキュリティ上の問題であり、これはほとんどの場合に必要ですnotが必要です。
これを念頭に置いて、リモート接続中にこのユーザーに同じ特権を持たせたい場合は、追加 run(ステップ#2で使用したパスワードでsome_pass
を置き換えます):
CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
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'
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
データベースを作成できるようになります。
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/
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;
完全を期すために、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;
よろしく
私は同じ問題を抱えていた、私はほとんどのアドバイスに従ったが、それは私のために機能しませんでした!私の問題は、ブラウザで http:// localhost/phpmyadmin を開いたときと同じでした。ログインの詳細を要求しました。
私はユーザーとしてrootを使用していましたが、私が知っていたパスワードは正しいものでした。そして、私は
#1698-ユーザー「root」@「localhost」のアクセスが拒否されました
必要なのは、既知のパスワードでphpmyadmin
ではなくroot
をユーザーとして使用することだけでした。
ラエルクーニャについて:
はい、彼の解決策は機能し、私は他の人を試しました。ただし、/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ユーザーのみがフルアクセスを取得します。