Tidak dapat mengatur ulang kata sandi root MySQL, mencoba semuanya

9

Baiklah, pertama mari kita perjelas bahwa saya telah membaca semua pertanyaan dari Tanya Ubuntu tentang masalah ini dan saya telah mengikuti semua langkah dari dokumen resmi:

help.ubuntu.com

dev.mysql.com

Saya menggunakan Ubuntu 16.04.1 LTS

Jadi sebelum seseorang menyarankan sesuatu yang mungkin sudah saya coba, saya akan menunjukkan apa yang saya lakukan:

root@localhost:/# sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.

MySQL berhenti dengan benar.

root@localhost:/# sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
[1] 3316
root@localhost:/#

Di sini saya tidak tahu apakah ini berhasil atau tidak, jadi saya tetap mengikuti langkah-langkahnya.

root@localhost:/# mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
root@localhost:/#

Tampaknya tidak berfungsi, karena layanan belum dimulai. Karena saya tidak dapat melanjutkan dengan langkah selanjutnya saya mencoba metode lain (pembersihan).

Setelah menggunakan:

sudo apt-get --purge remove
sudo apt-get install

Saya coba langkah selanjutnya:

root@localhost:/# mysqladmin -u root password MyNewPassword
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
root@localhost:/#

Karena ini juga tidak berhasil, saya sudah mencoba metode lain yang disebutkan di web mysql:

Jadi saya membunuh proses mysql seperti yang ditunjukkan di sana dan kemudian saya gunakan

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &
[1] 5267
root@localhost:/# 2017-02-01T12:47:49.250083Z mysqld_safe Logging to syslog.
2017-02-01T12:47:49.252427Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.254765Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.257045Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

[1]+  Salida 1                mysqld_safe --init-file=/home/me/mysql-init
root@localhost:/#

Sekarang adalah ketika saya keluar dari opsi, jadi saya juga mencoba metode lain yang disebutkan di sini di Tanya Ubuntu:

root@localhost:/# sudo dpkg-reconfigure mysql-server-5.7
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.17, use --force if you still need to run mysql_upgrade
root@localhost:/#

Dan sekarang saya benar-benar kehabisan pilihan, jadi setiap saran dipersilahkan.

Ilovelinux
sumber

Jawaban:

16

Saya memiliki masalah yang sama, dan saya menyelesaikannya dengan mengeksekusi baris ini:

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld

sebelum menjalankan baris ini:

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &

Bagi saya, langkah-langkah ini bekerja lebih baik.

Saya pikir ada cara yang lebih bersih untuk melakukan ini, tetapi bagi saya, itu adalah solusi cepat dan efisien.

odradek
sumber
1
thx, itu berhasil;)
Ilovelinux
Ini terjadi pada mysql 5.7. Ketika Anda menghentikan layanan mysql / var / run / mysqld dihapus dan diciptakan kembali ketika Anda memulai lagi layanan.
Capy
1

Saya tidak bisa mendapatkan mysql untuk menginstal ulang tidak peduli apa yang saya coba, saya akhirnya hanya perlu mencoba dan mengatur ulang kata sandi.

Saya harus menempuh rute ini di Ubuntu 16.04.1 LTS. Saya menghabiskan satu jam atau lebih untuk mencoba semua saran lain dari situs web MySql untuk semuanya pada SO serta Tanya Jawab Ubuntu, akhirnya saya berhasil 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

Juga perhatikan ini tidak bekerja untuk saya:
sudo dpkg-reconfigure mysql-server-5.7

Juga tidak:
sudo dpkg-reconfigure --force mysql-server-5.5

Membuat direktori layanan MySQL.
sudo mkdir /var/run/mysqld

Berikan izin pengguna MySQL untuk menulis ke direktori layanan.
sudo chown mysql: /var/run/mysqld

Kemudian:

  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
0

Saya memiliki masalah yang sama dan menyelesaikannya dengan:

# /etc/init.d/mysql stop
# service mysql stop
# mkdir -p /var/run/mysqld
# chown mysql:mysql /var/run/mysqld
# mysqld_safe --skip-grant-tables &
# mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=password('1234') where user='root';

(Di sini, authentication_stringpegang bidang kata sandi.)

Rajani
sumber