Mengatur kata sandi root di instalasi mysql 5.7 baru

11

Saya mencoba untuk menginstal mysql dalam melayani CentOS Linux release 7.2.1511. Lihatlah proses instalasi:

# sudo yum install mysql-server

Keluaran:

Dependencies Resolved

===========================================================================================================================================================================================================
 Package                                                 Arch                                    Version                                         Repository                                           Size
===========================================================================================================================================================================================================
Removing:
 mysql-community-client                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  109 M
 mysql-community-server                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  652 M

Transaction Summary
===========================================================================================================================================================================================================

Saya menjalankan mysql damon:

# sudo service mysqld start

Memeriksa layanan:

# ps -ef|grep mysql
mysql     1371     1  0 22:17 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Di sinilah masalah membuatku gila. Saya ingin menetapkan kata sandi root untuk pertama kalinya, jadi saya melakukannya:

# sudo mysql_secure_installation
// when password is required, I just type "enter key"

Tetapi hasilnya: Mengamankan penyebaran server MySQL.

Masukkan kata sandi untuk root pengguna: Kesalahan: Akses ditolak untuk 'root' @ 'localhost' pengguna (menggunakan kata sandi: TIDAK)

Googling kesalahan, dalam 90% kasus, solusinya adalah dengan memanggil mysqld_safe --skip-grant-tables &perintah:

service mysqld stop
mysqld_safe --skip-grant-tables &
mysql --user=root mysql
update user set Password=PASSWORD('new-password') where user='root';
flush privileges;
exit;

Tetapi mysqld_safememinta kesalahan "perintah tidak ditemukan". Saya juga diuji dengan sudo mysqld --skip-grant-tables &, tetapi tidak melakukan apa pun. Saya akan menghargai jika Anda membimbing saya ke arah yang benar untuk mengatur kata sandi root. Terima kasih sebelumnya.

manix
sumber
Perlu binari itu berada di PATH. Atau Anda perlu jalur penuh. (Ini lebih merupakan pertanyaan Linux daripada pertanyaan MySQL.)
Rick James

Jawaban:

18

Jika Anda hanya menjalankan perintah mysql di bawah pengguna root, Anda akan diberikan akses tanpa diminta kata sandi, karena otentikasi soket diaktifkan untuk root @ localhost.

Panduan ini menyesatkan.

Satu-satunya cara untuk menetapkan kata sandi adalah beralih ke otentikasi asli seperti:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
Vadim Smilansky
sumber
Anda adalah penyelamat! Bekerja sebagai pesona !.
Zugor
9

Dalam penelitian gila saya untuk solusi, saya melihat /var/log/mysqld.logdan menemukan baris ini:

[Note] Kata sandi sementara dihasilkan untuk root @ localhost: abc123

Sepertinya mysql 5.7+ menghasilkan kata sandi acak dalam instalasi dan diminta pada file itu.

manix
sumber
7

Gunakan langkah-langkah di bawah ini untuk mengatur ulang kata sandi:

$ sudo systemctl start mysqld

Setel ulang kata sandi root server MySQL.

$sudo grep 'temporary password' /var/log/mysqld.log

Keluarkan sesuatu seperti:

10.744785Z 1 [Note] A temporary password is generated for root@localhost: o!5y,oJGALQa

Gunakan kata sandi di atas selama proses reset mysql_secure_installation .

$ sudo mysql_secure_installation
Securing the MySQL server deployment.

Enter password for user root: 

Anda telah berhasil mengatur ulang kata sandi root dari server MySQL. Gunakan perintah di bawah ini untuk memeriksa koneksi server MySQL atau tidak.

$ mysql -u root -p

Lihat artikel saya: Instal MySQL 5.7 Terbaru di RHEL / Centos 7

Arvind
sumber
3

Semua hal di atas tidak bekerja untuk saya dan perhatikan, saya menghabiskan satu jam atau lebih mencoba semua saran lain dari situs MYSql untuk semuanya di SO, saya akhirnya berhasil bekerja dengan:

Catatan: ketika ditampilkan Masukkan kata sandi untuk root pengguna, saya tidak memiliki kata sandi asli jadi saya baru saja memasukkan kata sandi yang sama untuk digunakan sebagai kata sandi baru.

Catatan: tidak ada /var/log/mysqld.log saja /var/log/mysql/error.log

  1. bunuh pid mysqld saat ini
  2. jalankan mysqld dengan sudo / usr / sbin / mysqld &
  3. jalankan / usr / bin / mysql_secure_installation

    Output dari mysql_secure_installation

    root @ myServer: ~ # / usr / bin / mysql_secure_installation

    Mengamankan penyebaran server MySQL.

    Masukkan kata sandi untuk root pengguna:

    VALIDATE PASSWORD PLUGIN dapat digunakan untuk menguji kata sandi dan meningkatkan keamanan. Ini memeriksa kekuatan kata sandi dan memungkinkan pengguna untuk menetapkan hanya kata sandi yang cukup aman. Apakah Anda ingin memasang plugin VALIDATE PASSWORD?

    Tekan y | Y untuk Ya, tombol lain untuk Tidak: tidak Menggunakan kata sandi yang ada untuk root. Ubah kata sandi untuk root? ((Tekan y | Y untuk Ya, tombol lain untuk Tidak): y

    Kata sandi baru:

    Masukkan kembali kata sandi baru: Secara default, instalasi MySQL memiliki pengguna anonim, yang memungkinkan siapa saja untuk masuk ke MySQL tanpa harus membuat akun pengguna. Ini hanya dimaksudkan untuk pengujian, dan untuk membuat instalasi menjadi sedikit lebih lancar. Anda harus menghapusnya sebelum pindah ke lingkungan produksi.

    Hapus pengguna anonim? (Tekan y | Y untuk Ya, tombol lain untuk Tidak): y Sukses.

    Biasanya, root hanya diperbolehkan untuk terhubung dari 'localhost'. Ini memastikan bahwa seseorang tidak dapat menebak kata sandi root dari jaringan.

    Larang login root dari jarak jauh? (Tekan y | Y untuk Ya, tombol lain untuk Tidak): y Sukses.

    Secara default, MySQL dilengkapi dengan database bernama 'test' yang dapat diakses siapa saja. Ini juga dimaksudkan hanya untuk pengujian, dan harus dihapus sebelum pindah ke lingkungan produksi.

    Hapus database pengujian dan akses ke sana? (Tekan y | Y untuk Ya, tombol lain untuk Tidak): y

    • Menjatuhkan basis data pengujian ... Sukses.

    • Menghapus hak istimewa pada basis data pengujian ... Sukses.

    Reload tabel privilege akan memastikan bahwa semua perubahan yang dilakukan sejauh ini akan segera berlaku.

    Muat ulang tabel privilege sekarang? (Tekan y | Y untuk Ya, tombol lain untuk Tidak): y Sukses.

    Semua selesai!

JGlass
sumber