Tidak dapat memasukkan phpmyadmin sebagai root (MySQL 5.7)

66

Saya menggunakan desktop Ubuntu 16.04 (ditingkatkan dari 15.10).

Saya telah menginstal phpmyadmin dari oleh apt-get install phpmyadmin. Ini berfungsi jika saya pergi localhost/phpmyadmintetapi saya tidak bisa login sebagai root.

Saya telah mencari banyak untuk itu. Saya telah menemukan banyak sumber di mana mereka menyarankan untuk mengubah /etc/phpmyadmin/config.inc.phpdan mengganti pengguna dan kata sandi dengan 'root' dan '' (kosong untuk kata sandi). Tapi saya config.inc.phpberbeda dengan mereka. Sebagai contoh di file saya, tidak ada baris untuk pengguna dan kata sandi dan sepertinya itu mendapatkannya secara otomatis dari file lain yang /etc/phpmyadmin/config-db.php. Meskipun demikian, saya telah mengubah pengguna dan kata sandi dalam file itu, tetapi sekarang saya mendapatkan kesalahan ini:

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

Apa yang harus saya lakukan?


Versi Phpmyadmin: 4.5.4.1deb2ubuntu1
mysql Ver 14.14 Distrib 5.7.12, untuk Linux (x86_64) menggunakan EditLine wrapper

Mostafa Ahangarha
sumber
Versi MySQL yang mana?
Rael Gugelmin Cunha
Pertanyaan diperbarui
Mostafa Ahangarha
THE SIMPLE WAY pencarian masuk dan pathword di /etc/mysql/debian.cnf - Ubuntu 16.04
cl-r

Jawaban:

128

MySQL 5.7 mengubah model aman: sekarang rootlogin MySQL membutuhkan a sudo.

Yaitu, phpMyAdmin tidak akan dapat menggunakan rootkredensial.

Solusi paling sederhana, paling aman dan permanen akan menciptakan pengguna baru dan memberikan hak istimewa yang diperlukan.

1. Hubungkan ke mysql

sudo mysql --user=root mysql

2. Buat kata sandi asli

Pada langkah-langkah di bawah ini saya akan gunakan some_passsebagai sampel kata sandi. TOLONG, GANTI DENGAN PASSWORD ANDA! JANGAN GUNAKAN SOME_PASSSEBAGAI PASSWORD!

3. Buat pengguna untuk phpMyAdmin

Jalankan perintah berikut (ganti some_passdengan kata sandi yang diinginkan):

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

Jika phpMyAdmin Anda terhubung ke localhost, ini sudah cukup.

4. Opsional dan tidak aman: memungkinkan koneksi jarak jauh

Ingat : mengizinkan pengguna jarak jauh untuk memiliki semua hak istimewa adalah masalah keamanan dan ini tidak diperlukan dalam sebagian besar kasus.

Dengan pemikiran ini, jika Anda ingin pengguna ini memiliki hak yang sama selama koneksi remote, juga dijalankan (menggantikan some_passdengan sandi yang digunakan pada Langkah # 2):

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

5. Perbarui phpMyAdmin

Menggunakan sudo, edit /etc/dbconfig-common/phpmyadmin.conffile yang memperbarui nilai pengguna / kata sandi di bagian berikut (menggantikan some_passdengan kata sandi yang digunakan pada Langkah # 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'
Rael Gugelmin Cunha
sumber
2
Saya akan selidiki. Sebagai solusi untuk sementara, Anda dapat menambahkan pengguna baru dan memberikan semua izin dan kemudian menambahkan ini ke file konfigurasi phpmyadmin.
Rael Gugelmin Cunha
9
Saya suka bahwa MySQL terus memecahkan masalah setelah peningkatan. Dengan senang hati menggunakan root di meja kerja saya dan sekarang tampaknya satu-satunya solusi adalah "sudo mysql" pada baris perintah, buat pengguna baru, berikan semua hak istimewa yang sama dan gunakan itu di Workbench. Bodoh.
Andris
3
@MostafaAhangarha Setelah menyelidiki, saya menemukan bahwa kata sandi kosong diizinkan, tetapi rootpengguna selalu meminta sudopenggunaan pada 5.7. Jadi, saya telah memperbarui jawaban untuk memandu membuat pengguna baru dengan semua hak istimewa.
Rael Gugelmin Cunha
3
@Andris Ini akan memaksa orang untuk menggunakan MySQL dengan cara yang lebih aman. Tidak pernah merupakan ide yang baik untuk mengizinkan pengguna root pada database Anda untuk masuk tanpa kata sandi. Mungkin baik-baik saja pada mesin pengembangan lokal, tetapi pada server itu sangat berbahaya.
Dan
2
@Dan - itu keluhan terbesar saya - itu merusak lingkungan pengembangan lokal saya setelah memutakhirkan ke Ubuntu 16.04 tanpa peringatan. Saya tidak keberatan hal-hal seperti ini menjadi default untuk instalasi baru tetapi setidaknya bisa bertanya sebelum menginstal pembaruan.
Andris
10

Saya menghadapi masalah yang sama ketika menggunakan mariaDB dengan phpmyadmin (Ubuntu 16.04LTS).

Prasyarat:

1) Instal 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

Jika Anda ingin menghapus instalasi 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) Instal 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) Di apache2, buat tautan simbolis ke phpmyadmin

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

Oke, sekarang, jika Anda mengikuti instruksi Rael, Anda akan dapat masuk phpmyadmin, tetapi, setidaknya bagi saya, saya tidak dapat membuat database baru, ketika pesan merah muncul: No privileges(atau pesan serupa)

Cara mengatasinya adalah dengan mengkonfigurasi ulang phpmyadmin, dan dengan menjawab beberapa pertanyaan interaktif.

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

Sekarang jika Anda mencoba terhubung ke phpmyadmin ( localhost/phpmyadmin) menggunakan

username: root
password: pass

Anda dapat membuat basis data.

Dan Costinel
sumber
1
Terima kasih atas jawaban Anda. Tetapi bukankah lebih baik membagikan bagian terakhir daripada keseluruhan? Saya pikir sisanya tidak berguna di sini?
Mostafa Ahangarha
@MostafaAhangarha Mungkin postingannya agak terlalu panjang, tapi saya selalu ingin tahu konteks di mana jawaban diberikan.
Dan Costinel
Apakah menjalankan sudo dpkg-reconfigure phpmyadmin memiliki koneksi untuk menginstal mariadb dan unistalling mysql? Jika ya, maka informasi Anda mungkin berguna (mungkin karena Anda menyarankan penghapusan mysql yang merupakan DB yang saya gunakan dan saya akan gunakan). Jika tidak, maka tidak ada gunanya memberikannya sebagai konteks. Jika saya salah, buat saya benar.
Mostafa Ahangarha
2
Saya hanya mengikuti konfigurasi ulang dan sekarang berfungsi.
cwhisperer
Apakah ide yang baik untuk tidak memiliki kata sandi untuk akun root?
kurdtpage
6

Di Ubuntu 16.04 untuk Mysql 5.7 periksa informasi tabel di bawah ini dan lakukan pengaturan yang diperlukan:

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 |
+------------------+-----------+-----------------------+

Periksa apakah root memiliki plugin auth_socket lalu jalankan perintah di bawah ini:

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
Syed Abdul Qadeer
sumber
Ini akan bekerja hingga aptpembaruan MySQL berikutnya . Yaitu, Anda harus menerapkan ini setelah setiap pembaruan MySQL di Ubuntu.
Rael Gugelmin Cunha
6

Jika phpymadmin tidak dapat terhubung, itu mungkin karena mekanisme auth diatur ke auth_socket. Anda dapat mengubahnya untuk menggunakan kata sandi biasa seperti ini:

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

Saya sedang berjuang dengan ini sekarang pada instalasi yang bersih dari Ubuntu 18.04 dan inilah yang membuatnya bekerja. Ada artikel yang layak di sini untuk menjelaskan lebih lanjut:

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

billynoah
sumber
3

Untuk kelengkapan, saya telah menemukan solusi untuk masalah saya dalam menggunakan MariadB versi 10.1.23. Sintaks yang digunakan untuk mengatur pengguna baru mirip dengan yang dilaporkan ke posting di atas dari @Rael Gugelmin Cunha, saya taruh di sini solusi saya untuk referensi kepada orang lain yang menghadapi masalah yang sama:

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;

Salam

FOX KEBAKARAN
sumber
1
Selamat Datang di Tanya Ubuntu! Tanya Ubuntu hanya untuk Ubuntu, tolong jangan posting jawaban tentang Raspbian (berdasarkan Debian).
fosslinux
2
@ubashu Solusi ini bukan khusus Raspbian, ini khusus MariaDB.
Thomas Ward
Terima kasih! Masih tidak ada pilihan untuk membuat database baru.
hazard89
2

Saya memiliki masalah yang sama, saya telah mengikuti sebagian besar saran dan tidak ada yang berhasil untuk saya! Masalah saya adalah sama ketika saya membuka http: // localhost / phpmyadmin di browser saya meminta detail login.

Saya menggunakan root sebagai pengguna, dan kata sandi yang saya tahu benar. Dan saya mendapatkan

# 1698 - Akses ditolak untuk 'root' @ 'localhost' pengguna

Yang diperlukan hanyalah menggunakan phpmyadminsebagai pengguna, bukan root, dengan kata sandi yang dikenal dan membiarkan saya masuk.

plutesci
sumber
3
Maksud Anda nama pengguna harus "phpmyadmin"?
Mostafa Ahangarha
1
Ya itu berhasil untuk saya
plutesci
Dan bagi saya yang mengikuti tutorial, kata sandinya adalah "some_pass" haha. Terima kasih!
Marcelo Ágil
@ MarceloÁgil Saya telah menempatkan beberapa peringatan di jawaban saya di atas yang meminta orang untuk mengganti some_passdengan kata sandi asli!
Rael Gugelmin Cunha
1

Mengacu pada Rael Cunha:

Ya solusinya bekerja, dan saya sudah mencoba yang lain. Namun, merujuk pada pengguna yang memiliki kata sandi terbuka pada file konfigurasi seperti /etc/dbconfig-common/phpmyadmin.conftampak seperti cacat keamanan untuk tindakan di seluruh sistem.

Jadi saya lebih suka menyarankan apa yang MariaDB 10.1.xmenjadi perhatian (some_user dan some_pass akan menjadi apa pun yang mungkin Anda buat):

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

dan membiarkan pengaturan phpadmin (4) apa adanya.

Masuk ke phpmyadmin dengan kredensial Anda sendiri setelahnya

Pada pengaturan saya sendiri, saya mengganti '%' di atas dengan 'localhost' untuk tujuan keamanan, tetapi jika Anda memiliki port 3306 ditutup pada server Anda yang tidak akan selalu menimbulkan risiko keamanan bagi Anda.

Antonio J. de Oliveira
sumber
0

Hanya kode di bawah ini yang berfungsi untuk ubuntu 18.04, php 7 di atas dan mysql 5.7

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

Jangan ganti 'phpmyadmin'. Membuat pengguna lain tidak memiliki hak penuh seperti membuat pengguna baru, menetapkan hak istimewa basis data untuk pengguna seperti itu. Hanya pengguna phpmyadmin yang akan mendapatkan akses penuh.

Hemamalini
sumber
-2

jika Anda menginstal MySQL, hentikan secara terpisah dengan perintah ini di bawah ini sudo / opt / lampp / lampp stop service mysql stop sudo / opt / lampp / lampp start

zouhair elhadraoui
sumber