MySQL 5.7 mengubah model aman:sekarang login root MySQL memerlukan sudo
Solusi paling sederhana (dan teraman) adalah membuat pengguna baru dan memberikan hak istimewa yang diperlukan.
sudo mysql --user=root mysql
CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Referensi - https://askubuntu.com/questions/763336/cannot-enter-phpmyadmin-as-root-mysql-5-7
Server MySQL 5.7 sudah diinstal secara default di Linux Mint 19 baru saya.
Tapi, apa itu MySQL root
kata sandi? Ternyata:
Penginstalan default menggunakan auth_socket
untuk autentikasi, sebagai pengganti kata sandi!
Ini memungkinkan login tanpa kata sandi, asalkan seseorang masuk ke sistem Linux dengan nama pengguna yang sama. Untuk login sebagai root MySQL user
, seseorang dapat menggunakan sudo:
sudo mysql --user=root
Tetapi bagaimana cara mengubah kata sandi root? Untuk mengilustrasikan apa yang terjadi, saya membuat pengguna baru "saya", dengan hak istimewa penuh, dengan:
mysql> CREATE USER 'me'@'localhost' IDENTIFIED BY 'my_new_password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'me'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
Membandingkan "saya" dengan "root":
mysql> SELECT user, plugin, HEX(authentication_string) FROM mysql.user WHERE user = 'me' or user = 'root';
+------+-----------------------+----------------------------------------------------------------------------+
| user | plugin | HEX(authentication_string) |
+------+-----------------------+----------------------------------------------------------------------------+
| root | auth_socket | |
| me | mysql_native_password | 2A393846353030304545453239394634323734333139354241344642413245373537313... |
+------+-----------------------+----------------------------------------------------------------------------+
Karena menggunakan auth_socket, kata sandi root tidak dapat diubah:SET PASSWORD
perintah gagal, dan mysql_secure_installation
tidak mencapai apa-apa...
==> Untuk mengubah mode autentikasi alternatif ini dan mengembalikan root
MySQL pengguna untuk menggunakan kata sandi:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SOME_NEW_ROOT_PASSWORD';
Penjelasan yang bagus.
Lebih detail dari manual MySQL.
Ada begitu banyak jawaban di luar sana yang mengatakan untuk menginstal ulang mysql atau menggunakan beberapa kombo dari
mysqld_safe --skip-grant-tables
dan / atau
UPDATE mysql.user SET Password=PASSWORD('password')
dan / atau sesuatu yang lain ...
... Tidak ada yang berhasil untuk saya
Inilah yang berhasil untuk saya, di Ubuntu 18.04, dari atas
Dengan kredit khusus untuk jawaban ini karena telah mengeluarkan saya dari rasa frustrasi pada ...
ini$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf
Perhatikan baris yang berbunyi:
user = debian-sys-maint
password = blahblahblah
Lalu:
$ mysql -u debian-sys-maint -p
Enter password: // type 'blahblahblah', ie. password from debian.cnf
mysql> USE mysql
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 |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> COMMIT; // When you don't have auto-commit switched on
Baik:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Atau:
// For MySQL 5.7+
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
Lalu:
mysql> FLUSH PRIVILEGES;
mysql> COMMIT; // When you don't have auto-commit switched on
mysql> EXIT
$ sudo service mysql restart
$ mysql -u root -p
Enter password: // Yay! 'new_password' now works!
Setelah Anda menginstal MySQL-community-server 5.7 dari fresh di linux, Anda perlu menemukan kata sandi sementara dari /var/log/mysqld.log untuk login sebagai root.
grep 'temporary password' /var/log/mysqld.log
- Jalankan
mysql_secure_installation
untuk mengubah kata sandi baru
ref:http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html