mysql tidak meminta kata sandi root saat menginstal

54

Saya dulu apt install mysql-servermenginstal MySQL pada Ubuntu 16.04 tetapi selama instalasi, tidak meminta kata sandi root.

Setelah instalasi saya dapatkan ERROR 1045ketika saya mencoba masuk rootdan mysql_secure_installationmelemparkan kesalahan yang sama. I purged dan autoremoved kemudian diinstal ulang tetapi tidak berfungsi.

Bagaimana saya bisa memperbaikinya? Bisakah saya mengatur kata sandi root jika saya tidak mengaturnya saat instalasi?

Ini adalah log instalasi saya:

Paket tambahan berikut akan diinstal:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7
  mysql-server-core-5.7
Paket yang disarankan:
  mailx tinyca
Paket BARU berikut ini akan diinstal:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7
  mysql-server-core-5.7
0 ditingkatkan, 6 baru dipasang, 0 untuk dihapus dan 0 tidak ditingkatkan.
Perlu mendapatkan 0 B / 17,9 MB arsip.
Setelah operasi ini, 160 MB ruang disk tambahan akan digunakan.
Apakah Anda ingin melanjutkan? [Y / n] y
Paket pra-konfigurasi ...
Memilih paket yang sebelumnya tidak dipilih libaio1: amd64.
(Membaca database ... 227144 file dan direktori saat ini diinstal.)
Bersiap untuk membuka paket ... / libaio1_0.3.110-2_amd64.deb ...
Membongkar libaio1: amd64 (0.3.110-2) ...
Memilih paket yang sebelumnya tidak dipilih mysql-client-core-5.7.
Bersiap membongkar ... / mysql-client-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Membongkar mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Memilih paket yang sebelumnya tidak dipilih mysql-client-5.7.
Bersiap untuk membuka paket ... / mysql-client-5.7_5.7.12-0ubuntu1_amd64.deb ...
Membongkar mysql-client-5.7 (5.7.12-0ubuntu1) ...
Memilih paket yang sebelumnya tidak dipilih mysql-server-core-5.7.
Bersiap membongkar ... / mysql-server-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Membongkar mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Memilih paket yang sebelumnya tidak dipilih mysql-server-5.7.
Bersiap membongkar ... / mysql-server-5.7_5.7.12-0ubuntu1_amd64.deb ...
Membongkar mysql-server-5.7 (5.7.12-0ubuntu1) ...
Memilih paket mysql-server yang sebelumnya tidak dipilih.
Bersiap membongkar ... / mysql-server_5.7.12-0ubuntu1_all.deb ...
Membuka kemasan server mysql (5.7.12-0ubuntu1) ...
Memproses pemicu untuk libc-bin (2.23-0ubuntu3) ...
Memproses pemicu untuk man-db (2.7.5-1) ...
Memproses pemicu untuk systemd (229-4ubuntu4) ...
Memproses pemicu untuk ureadahead (0.100.0-19) ...
Menyiapkan libaio1: amd64 (0.3.110-2) ...
Menyiapkan mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Menyiapkan mysql-client-5.7 (5.7.12-0ubuntu1) ...
Menyiapkan mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Menyiapkan mysql-server-5.7 (5.7.12-0ubuntu1) ...
pembaruan-alternatif: menggunakan /etc/mysql/mysql.cnf untuk menyediakan /etc/mysql/my.cnf (my.cnf) dalam mode otomatis
Memeriksa apakah pembaruan diperlukan.
Instalasi MySQL ini sudah ditingkatkan ke 5.7.12, gunakan --force jika Anda masih perlu menjalankan mysql_upgrade
Menyiapkan server mysql (5.7.12-0ubuntu1) ...
Memproses pemicu untuk libc-bin (2.23-0ubuntu3) ...
spqa
sumber

Jawaban:

61

Anda dapat memulihkan atau mengatur kata sandi root tanpa mengetahui yang sekarang dengan memulai mysql tanpa memuat tabel hibah.

Harap perhatikan $di perintah. Ini menentukan terminal prompt yang Anda lihat saat mengetik perintah. Ini menunjukkan itu adalah baris teks, tetapi dan perintah terminal yang diketik aktual. mysql>Awalan " " juga merupakan prompt. Itu adalah prompt yang Anda dapatkan ketika menjalankan mysql secara interaktif.

Ini adalah cli (baris perintah) untuk melakukan ini:
(Pastikan untuk menghentikan server saat ini sebelum melakukan langkah-langkah. Hanya satu server yang dapat berjalan pada satu waktu.)

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld
$ sudo mysqld_safe --skip-grant-tables&

Sekarang Anda dapat masuk sebagai root tanpa kata sandi dan melakukan semua perintah, seperti dalam hal ini, atur kata sandi root sebagai root.

$ sudo mysql --user=root mysql

Ini adalah set root password yang akan Anda lakukan di dalam mysql jika Anda memiliki MySQL 5.6 atau di bawah ini:

mysql> update user set Password=PASSWORD('new-password') where user='root';
flush privileges;

Di MySQL 5.7 atau lebih tinggi

mysql> update user set authentication_string=PASSWORD('new-password') where user='root';
flush privileges;

Dari sana, berhentilah (bunuh msqld yang sedang berjalan) mysql dan mulai seperti biasa.

Catatan tentang memulai dan menghentikan layanan mysql:

Hentikan mysql:

$ sudo service mysql stop

Mulai mysql (normal):

$ sudo service mysql start

Matikan sesi safe mode mysql sementara:

$ sudo mysqladmin shutdown
LD James
sumber
11
di mysql 5.7.12 tidak ada kolom bernama kata sandi di tabel pengguna. Karenanya perintah berikut bekerja untuk saya. perbarui set pengguna authentication_string = PASSWORD ('kata sandi baru') di mana pengguna = 'root';
Kode
7
Saya masih mendapatkanERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
llamerr
@ ErelSegal-Halevi Ada dua hal yang harus Anda lakukan. Lari $ mysql_upgrade -u root -p. Coba juga perintah di atas yang diberikan oleh RP Singh.
LD James
Saya juga masih mendapatkan kesalahan ini.
Jamie Hutber
SET PASSWORD FOR 'root' = PASSWORD('your-password')jika Anda menggunakan mariadb
user1036719
37

Itu tidak akan meminta kata sandi saat menginstal mysqldi Ubuntu 16.04 tetapi Anda dapat mengaturnya setelah instalasi berhasil dengan cara berikut:

Setelah menyelesaikan instalasi mysql, jalankan perintah:

sudo mysql_secure_installation

Ini akan menunjukkan:

CATATAN: MENJALANKAN SEMUA BAGIAN DARI SCRIPT INI DIREKOMENDASIKAN UNTUK SEMUA LAYANAN MariaDB DALAM PENGGUNAAN PRODUKSI! HARAP BACA SETIAP LANGKAH DENGAN SEKSAMA!

Untuk masuk ke MariaDB untuk mengamankannya, kami memerlukan kata sandi saat ini untuk pengguna root. Jika Anda baru saja menginstal MariaDB, dan Anda belum menetapkan kata sandi root, kata sandinya akan kosong, jadi Anda cukup menekan enter di sini.

Enter current password for root (enter for none): (di sini tekan Enter)

Oke, kata sandi yang berhasil digunakan, pindah ...

Mengatur kata sandi root memastikan bahwa tidak ada yang bisa login ke pengguna root MariaDB tanpa otorisasi yang tepat.

Set root password? [Y/n] y   (press 'y' to set new password)
New password: 
Re-enter new password:

Kata sandi berhasil diperbarui! Memuat ulang tabel privilege .. ... Sukses!


Untuk Ubuntu 18.04 ATAU mysql-serverversi 5.7.22, METODE INI TIDAK AKAN BEKERJA

Untuk mengatur kata sandi root di Ubuntu 18.04, Pertama ikuti tiga perintah pertama atau dua langkah pertama jawaban LD James kemudian jalankan,

mysql> alter user 'root'@'localhost' identified by '<password>';

Kata sandi untuk pengguna root diatur!

ATAU

Ikuti langkah-langkah ini untuk mengatur kata sandi root di 18.04:

Karena tidak ada kata sandi yang ditetapkan untuk pengguna root, cukup login dengan kata sandi kosong

sudo mysql -u root -p
Enter password: (press enter as no password is set)

setelah itu dapat dengan mudah menjalankan query

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
bunga aster
sumber
2
Masalah dalam hal pertanyaan ini adalah bahwa pengguna tidak bisa mendapatkan petunjuk yang Anda sebutkan karena dia tidak tahu current password for root.
LD James
@LDJames ya, Anda benar. Saya tidak ingat tentang ERROR: 1405 ketika saya berlari mysql_secure_installationtetapi sudo mysql_secure_installationbekerja untuk saya. instalasi mysql tidak meminta kata sandi. Itu terjadi dengan saya yang sama. dan here press enterberarti tekan enter tanpa kata sandi.
Daisy
2
Sebagai concers ubuntu 18.04 atau debian 9+ tidak akan terhubung dengan kata sandi kosong dan bahkan setelah mengatur ulang pass untuk root, masih menolak untuk terhubung
chefarov
@chefarov Menghadapi masalah yang sama, sangat membuat frustrasi
RedactedProfile
Memang, saya masih mendapatkan kesalahan yang sama
Jamie Hutber
17

Rupanya instalasi mysql-server pada 16,04 (atau instalasi 5,7?) Memungkinkan akses root tidak melalui kata sandi, tetapi melalui plugin auth_socket . Menjalankan sudo mysql -u root(nb w / oa kata sandi) akan memberi Anda mysql console sedangkan menjalankan perintah sebagai non-root meminta Anda untuk kata sandi.

Tampaknya mengubah kata sandi tidak membuat banyak perbedaan karena backend auth bahkan tidak memeriksa kata sandi. Ada artikel yang sangat komprehensif tentang cara mengubah plugin dan beralih ke otentikasi kata sandi .

karper
sumber
4
Saya dapat mengonfirmasi dengan instalasi baru apt install mysql-servertanpa menentukan kata sandi pada 18.04. Gejala dan solusinya persis seperti yang dijelaskan.
EricC
jadi bagaimana caranya saya terhubung?
Jamie Hutber
9

Setelah instalasi cukup:

1.

sudo mysql

(ya, tidak ada pengguna yang tidak lulus)

2. Anda sekarang berada di konsol mysql:

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

3.

FLUSH PRIVILEGES;

  1. Itu dia. Anda sekarang dapat memasuki konsol lain kali seperti biasa:

    mysql -u root -p my_new_pass

DimiDak
sumber
3
Saya mencoba banyak jawaban lain, tetapi yang ini berhasil di Amazon EC2
Haris ur Rehman
2
Ini adalah jawaban yang benar untuk WSL Ubuntu (Linux pada Windows).
Fer García
2
Ini adalah satu-satunya jawaban yang bekerja untuk saya di ubuntu 18,04 instalasi baru di google cloud.
Aakash
1
Bekerja untuk saya di Ubuntu 19.04. Saya memang menjalankan instalasi mysql_secure_my, tetapi sepertinya kata sandi root tidak disetel.
Jens Wagemaker
1
Saya mencoba puluhan solusi. Ini adalah yang termudah dan satu-satunya yang berhasil.
mreff555
4
  1. ada akun pengguna default.

    $ vim /etc/mysql/debian.cnf 
    

    Anda akan mendapatkan akun ini dari ini seperti ini:

    user     = debian-sys-maint
    password = nUZTARYslBsASzpw
    
  2. Anda masuk dengan akun ini

    $ mysql -u debian-sys-maint -p
    
  3. edit kata sandi root Anda

    mysql> show databases;
    
    mysql> use mysql;
    
    mysql> update user set authentication_string=PASSWORD("new_password") where user='root';
    
    mysql> update user set plugin="mysql_native_password";
    
    mysql> flush privileges;
    
    mysql> quit;
    
  4. restart mysql

    $ /etc/init.d/mysql restart;
    

maka Anda bisa mysql -u root -pdengan Anda pengaturan sebelumnya.

pwxcoo
sumber
Saya mencoba setiap solusi lain, dan ini adalah satu-satunya yang bekerja untuk saya. (Linux Mint 19.2).
ElectroBuddha
0

Menambah jawaban utama, Jika Anda terjebak di

" mysqld_safe Memulai daemon mysqld dengan database dari / var / lib / mysql "

Satu hal yang perlu diingat bahwa Anda harus menggunakan jendela terminal lain untuk memasukkan perintah berikut.

$ sudo mysql --user=root mysql

Jika Anda mencoba melakukannya di jendela yang sama, itu akan mematikan proses safemode mysqld.

Mohd Abdul Mujib
sumber
-1

Berikut cara mengatur mysql-serverdengan terminal password prompt di Ubuntu 18.10.

  1. Unduh Repositori MySQL APT melalui https://dev.mysql.com/downloads/repo/apt/
  2. cdke dalam direktori tempat Anda mengunduh dan menjalankan dpkg -i mysql-apt-config_0.8.13-1_all.deb(periksa nomor versi Anda)
  3. Dari menu prompt pilih opsi terakhir "ok" dan kemudian "ok" lagi.

  4. Perbarui dan instal mysql-server dan mysql-client:

sudo apt pembaruan
sudo untuk menginstal mysql-server mysql-client
  1. Ketikkan kata sandi root Anda di promt.
  2. Pilih "Use Legacy Authentication Method"jika framework / aplikasi Anda berjalan (seperti laravel) yang belum mendukung yang baru "Strong Password Encryption", jika tidak, jika framework / aplikasi Anda mendukung "Strong Password Encryption"maka pilihlah.
  3. Login sebagai root dan periksa apakah itu berfungsi.
ThomasAFink
sumber