GNU/Linux >> Belajar Linux >  >> Linux

Apa kata sandi root default untuk MySQL 5.7

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.

1. Sambungkan ke mysql

sudo mysql --user=root mysql

2. Buat pengguna untuk phpMyAdmin

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.

  1. grep 'temporary password' /var/log/mysqld.log
  2. Jalankan mysql_secure_installation untuk mengubah kata sandi baru

ref:http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html


Linux
  1. 5 Pengganti Gratis Terbaik untuk Server MySQL

  2. Apa tujuan dari grup "roda" di Linux?

  3. Cara mengubah kata sandi root mysql

  1. Untuk apa opsi 'soname' untuk membangun perpustakaan bersama?

  2. Untuk apa grup `bayangan` digunakan?

  3. Apa urutan default dari jenis Linux?

  1. Apa distribusi Linux terbaik untuk pemula?

  2. Bagaimana cara mereset kata sandi root MySQL?

  3. Tindakan Instal untuk produk MySQL Server 5.7.19 gagal.