ERROR 2002 (HY000): Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/run/mysqld/mysqld.sock' (2)

441

Saya menginstal LAMP di Ubuntu 12.04 LTS (Precise Pangolin) dan kemudian mengatur kata sandi root di phpMyAdmin . Saya lupa kata sandi dan sekarang saya tidak bisa masuk. Ketika saya mencoba mengubah kata sandi melalui terminal saya mendapatkan:

ERROR 2002 (HY000): Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/run/mysqld/mysqld.sock' (2)

Bagaimana saya bisa memperbaikinya? Saya tidak dapat membuka LAMP, menghapus instalannya atau menginstalnya kembali.

sushmit sarmah
sumber
Mungkin instal ulang lebih mudah: stackoverflow.com/a/31984482/763744
Zernel
Setel ulang kata sandi dengan menghentikan MySQL dan memulainya dalam mode aman melompati tabel
--grant
ketik ini di terminal Anda "sudo apt-get install mysql-server"
Humphrey
Mulai atau mulai ulang layanan mysql dan periksa. sudo /etc/init.d/mysql start atau sudo /etc/init.d/mysql restart
Jitendra Patel
systemctl start mariadb.service
Thewebus

Jawaban:

253

Saya pernah mengalami masalah ini dan menyelesaikannya dengan menginstal mysql-server, jadi pastikan Anda telah menginstalnya mysql-server, bukan yang mysql-clientlainnya.

Kesalahan itu berarti file /var/run/mysqld/mysqld.socktidak ada, jika Anda tidak menginstal mysql-server, maka file tidak akan ada. Jadi dalam hal ini, instal dengan

sudo apt-get install mysql-server

Tetapi jika mysql-serversudah terpasang dan sedang berjalan, maka Anda perlu memeriksa file konfigurasi.

File konfigurasi adalah:

/etc/my.cnf
/etc/mysql/my.cnf
/var/lib/mysql/my.cnf

Dalam /etc/my.cnf, konfigurasi file socket mungkin /tmp/mysql.sockdan dalam /etc/mysql/my.cnfkonfigurasi file socket mungkin /var/run/mysqld/mysqld.sock. Jadi, hapus atau ganti nama /etc/mysql/my.cnf, biarkan mysql gunakan /etc/my.cnf, maka masalahnya bisa terpecahkan.

towry
sumber
Anda dapat menjalankan daemon mysql, dan mysql-server-core diinstal, tetapi Anda harus menginstal mysql-server, yang merupakan binari DAN pengaturan basis data sistem!
Cedric
99
sudo apt-get install mysql-serveruntuk menginstal mysql di ubuntu
towry
9
Jika saya harus menjelaskan secara teknis, saya akan mengatakan 1) Jika Anda menjalankan "mysql -u <user_name> -h <MySQL_Server_address> -p", Anda sebenarnya menjalankan klien mysql untuk mengakses server mysql. Jika Anda tidak menginstal server mysql pada alamat / alamat IP yang Anda sebutkan dengan '-h', kesalahan di atas akan muncul. Ini karena tidak dapat terhubung ke server MySQL melalui soket mysql.sock 2) Jika Mysql-server sudah diinstal, itu harus dijalankan. Jika tidak, Anda akan melihat kesalahan yang sama. Jadi, jalankan di server yang Anda tentukan.
Mayur Nagekar
1
Ini juga dapat terjadi jika Anda mencoba mengubah direktori tempat database disimpan, tetapi memasukkan direktori yang salah dalam file konfigurasi (seperti salah ketik). Alih-alih memberi tahu Anda direktori kesalahan ketik tidak ada, itu akan memberi tahu Anda bahwa Anda tidak memiliki izin untuk mengaksesnya.
Michael
4
Sebagai langkah pertama saya akan merekomendasikan upaya untuk me-restart proses server (lihat perbedaan server vs klien lain). Coba sudo /etc/init.d/mysql restart. Biasanya, instalasi ulang tidak diperlukan. Saya akan merekomendasikan Anda untuk terlebih dahulu memeriksa file log. Bukan hanya file log mysql tetapi juga / var / log / syslog karena Anda mungkin mengalami crash server yang menyebabkan mysql mogok sebagai efek samping.
Rein
212

Coba ini:

mysql -h 127.0.0.1 -P 3306 -u root -p <database>

Juga (untuk melihat apakah itu berjalan):

telnet 127.0.0.1 3306 

Mungkin ini hanya kesalahan konfigurasi pada my.cnffile, dalam /etc/somewhere(tergantung pada distribusi Linux ).

Yannick
sumber
1
Saya mendapatkan kesalahan yang sama. Dan saya telah memeriksa dan binding default di main dan my.cnf sudah diatur ke 127.0.0.1. Namun menggunakan perintah Anda di atas memungkinkan saya untuk terhubung. Harus terus berburu untuk melihat mengapa melakukan "mysql" memberikan kesalahan.
cchiera
1
Saya mendapatkan telnet: Tidak dapat terhubung ke host jarak jauh: Sambungan ditolak sebagai akibat dari perintah telnet. Namun apache masih berjalan karena saya dapat membuka localhost
Rishi Dua
@cchiera Anda tahu, saya tidak memiliki kesalahan ini sebelumnya. Tetapi ketika saya ingin terhubung ke db saya melalui aplikasi iOS dengan menggunakan ssh tunnel, saya mendapatkan kesalahan 2013 ini. Untuk menyelesaikannya saya harus mengedit /etc/my.cnfdan berkomentar #bind-address = 127.0.0.1 Referensi 1 Referensi 2 . Lalu saya bisa terhubung. Setelah ini, saya menyadari saya mendapatkan sekarang kesalahan 2002 ini yang membawa saya ke jawaban ini dan sekarang ini berfungsi lagi. Jelas saya setuju dengan Anda dengan mendapatkan penjelasan tentang mengapa hanya mengetik mysqltanpa -hmelempar kesalahan.
Pathros
Catatan: mysql -h localhosttidak berfungsi. Pastikan untuk menggunakan mysql -h 127.0.0.1sebagaimana ditentukan dalam jawaban.
vadasambar
Bagaimana saya bisa menyelesaikan ini jika saya bisa masuk dengan perintah dalam jawaban ini?
Carlos A. Jimenez Holmquist
128

Saya melihat semua jawaban ini, tetapi tidak ada yang menawarkan opsi untuk mengatur ulang kata sandi dan tidak ada jawaban yang diterima . Pertanyaan sebenarnya adalah dia lupa kata sandi, jadi dia perlu mengatur ulang, tidak melihat apakah itu berjalan atau tidak (diinstal atau tidak) karena sebagian besar dari jawaban ini menyiratkan.


Untuk mereset kata sandi

Ikuti langkah-langkah ini (dapat membantu jika Anda benar-benar lupa kata sandi dan Anda dapat mencobanya kapan saja, bahkan jika Anda tidak dalam situasi saat ini):

  1. Berhenti mysql

    sudo /etc/init.d/mysql stop

    Atau untuk versi distribusi lainnya:

    sudo /etc/init.d/mysqld stop
  2. Mulai MySQL dalam mode aman

    sudo mysqld_safe --skip-grant-tables &
  3. Masuk ke MySQL menggunakan root

    mysql -uroot
  4. Pilih database MySQL yang akan digunakan

    use mysql;
  5. Setel ulang kata sandi

    -- MySQL version < 5.7
    update user set password=PASSWORD("mynewpassword") where User='root';
    
    -- MySQL 5.7, mysql.user table "password" field -> "authentication_string"
    
    update user set authentication_string=password('mynewpassword') where user='root';
  6. Siram hak istimewa

    flush privileges;
  7. Mulai ulang server

    quit
  8. Hentikan dan mulai server lagi

    Ubuntu dan Debian:

    sudo /etc/init.d/mysql stop
    ...
    sudo /etc/init.d/mysql start

    Di CentOS, Fedora, dan RHEL:

    sudo /etc/init.d/mysqld stop
    ...
    sudo /etc/init.d/mysqld start
  9. Login dengan kata sandi baru

    mysql -u root -p
  10. Ketikkan kata sandi baru dan nikmati server Anda lagi seperti tidak ada yang terjadi

Ini diambil dari Reset kata sandi root MySQL .

davejal
sumber
Memperbarui kata sandi pengguna tidak berfungsi untuk saya, tetapi begitu masuk ke monitor MySQL dan setelah menggunakan database mysql, repair table user use_frmberhasil bagi saya untuk menyelesaikan masalah ini. - stackoverflow.com/questions/4297592/…
Craig van Tonder
20
Di MySQL 5.7, bidang kata sandi di bidang tabel mysql.user telah dihapus, sekarang nama bidangnya adalah 'authentication_string', jadi (5) seharusnyaupdate user set authentication_string=password('mynewpassword') where user='root';
Daniel
Apakah Anda tahu cara membuat skrip bash ini? Saya sepertinya membutuhkannya setiap kali saya me-restart kotak.
vphilipnyc
Sesuatu memberi tahu saya bahwa Anda menginginkan solusi, tetapi Anda harus benar-benar mencoba mencari tahu mengapa Anda perlu melakukan ini setiap waktu dan memperbaikinya. Adapun script mengajukan pertanyaan baru dan memposting apa yang sudah Anda coba, mungkin beberapa orang lain dapat membantu
davejal
2
Ini bekerja dengan baik untuk saya, tetapi saya pertama kali harus mengimplementasikan solusi ini: stackoverflow.com/questions/42153059/…
Andrew Fox
68

Saya mencoba langkah-langkah berikut:

  1. Masuk sebagai super useratau gunakansudo
  2. Buka /etc/mysql/my.cnfmenggunakan gedit
  3. Temukan bind-address, dan ubah nilainya ke alamat IP mesin host server database. Bagi saya, itu localhostatau127.0.0.1
  4. Simpan dan tutup file.
  5. Kembali ke terminal dan jalankan sudo service mysql start

Dan itu berhasil untuk saya.

rshahriar
sumber
4
Dari ini, saya baru saja menjalankan layanan sudo mysql restart dan itu berhasil.
Orane
Dalam kasus saya kesalahannya adalah IP berubah, jadi saya mengatur bind-address = localhost
Nicolás Arias
@rshahriar tidak ada yang disebut sebagai bind-address di /etc/my.cnf saya, apakah itu ide yang baik untuk menambahkan field
RCBian
@ SilvioDelgado Tidak jika Anda ingin terhubung melalui ssh tunneling. Penjelasan di sini
Pathros
me-restart layanan mysql juga bekerja untuk saya, tetapi masih belum yakin di mana menemukan error log untuk mencari tahu penyebabnya dan mencoba mencegahnya terjadi lagi ...
Maleka
41

Saya memperbaiki masalah ini dengan menjalankan perintah berikut:

mysql.server start

Dan jika Anda menggunakan mac dan minuman buatan untuk menginstal mysql, cukup gunakan:

brew services start mysql
sbodanis
sumber
35

Saya punya masalah serupa. mysql tidak akan mulai:

sudo service mysql start
start: Job failed to start

Jika saya menonaktifkan apparmor:

sudo aa-complain /etc/apparmor.d/*

masalahnya hilang. Masalahnya adalah bahwa mysqld sedang mencoba untuk mengakses /run/mysqld/mysqld.sock tetapi profil apparmor hanya memberikan izin ke /var/run/mysqld/mysqld.sock (/ var / run disinkronkan ke / run, jadi ini sebenarnya sama). Tidak yakin mengapa mysqld tidak menggunakan jalur var karena itulah yang diatur dalam semua file konfigurasi, tetapi Anda dapat memperbaiki masalahnya dengan menambahkan berikut ini ke /etc/apparmor.d/usr.sbin.mysqld

/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock rw,
dkoes
sumber
Saya tidak tahu bahwa saya harus memanggil "sudo service mysql start". Terakhir kali saya menginstal MySQL di Ubuntu, saya pikir itu autostarted setelah instalasi. MariaDB di Manjaro mengharuskan layanan untuk secara eksplisit dimulai setelah instalasi.
dmiller309
31

Dalam kasus saya itu adalah bahwa disk sudah penuh dan mysqld tidak dapat memulai lagi.

Cobalah untuk me-restart layanan mysql.

> service mysql restart

atau

> service mysql stop

> service mysql start

Jika tidak mengenali stopperintah maka pasti ruang disk. Anda harus membuat ruang di partisi mysqldialokasikan atau membuat disk lebih besar.

Periksa ruang disk dengan

> df -h
Martin Schultz
sumber
2
Hal yang sama terjadi pada saya - disk penuh. Membersihkan beberapa ruang, reboot dan masalah hilang.
Darren
2
Jika itu adalah masalah Anda yang mengeksekusi: "/etc/init.d/mysqld start" akan memberi tahu Anda bahwa partisi disk Anda sudah penuh
Tickon
Sama bagi saya, disk 100%. Ruang bersih dan mulai layanan ok
Hugo
28

Saya memecahkan ini dengan mematikan mysqlproses:

ps -ef | grep mysql
kill [the id]

Dan kemudian saya mulai server lagi dengan:

sudo /etc/init.d/mysql restart

Tetapi startbekerja juga:

sudo /etc/init.d/mysql start

Kemudian saya login sebagai admin, dan saya selesai.

Wartari
sumber
yah, saya sebenarnya membatalkan mysql sebelum crash. Lalu saya mendapatkan "* Silakan lihat di syslog." dan "ERROR 2002 (HY000): Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/run/mysqld/mysqld.sock' (111)". Akhirnya, saya menyadari sedang mencoba memulihkan diri, jadi saya bunuh dan mulai ulang.
cwhsu
Ada situasi (jarang) di mana "mysql start" akan gagal, jadi Anda perlu menggunakan argumen "restart". Jika Anda perlu mematikan proses daemon, lebih baik menggunakan argumen "stop" daripada perintah kill. Namun, perintah killall lebih nyaman daripada perintah kill (killall mysqld).
Rein
Membunuh proses MySQL dan kemudian me-restart MySQL bekerja untuk saya, bagus
Vishal Shetty
21

Entah bagaimana proses server MySQL tidak membuat soket, atau klien mencari soket di tempat yang salah.

Saran pertama saya adalah memeriksa apakah server MySQL sedang berjalan. Saran kedua mungkin, apakah server MySQL berjalan di host lain? Jika demikian, tambahkan -h <hostname>bendera ke klien MySQL Anda di terminal.

Jika MySQL memang berjalan, dan berjalan secara lokal, periksa my.cnffile Anda . Seharusnya ada garis seperti

socket = /var/run/mysqld/mysqld.sock

Lihat apakah itu cocok dengan lokasi soket yang Anda sebutkan di pos Anda.

Dari pengalaman, saya akan mengatakan skenario yang paling mungkin adalah server MySQL Anda tidak berjalan sama sekali atau tidak berjalan di host yang sama dengan tempat Anda menjalankan klien MySQL Anda dari terminal.

Wouter
sumber
19

Saya baru saja mengalami masalah yang sama setelah saya harus me-restart server produksi saya. Saya menjalankan Debian 8.1 (Jessie) pada tetesan DigitalOcean.

Inilah yang saya lakukan untuk menyelesaikan masalah saya:

  1. Periksa apakah file tersebut /var/run/mysqld/mysqld.sockada. Jika tidak, buat secara manual dengan memasukkan touch /var/run/mysqld/mysqld.sock(yang harus saya lakukan).

  2. Jadi proses MySQL dapat menggunakan file ini. Ubah kepemilikan file tersebut dengan memasukkan chown mysql /var/run/mysqld/mysqld.sock.

  3. Setelah '2' selesai, restart layanan MySQL dengan memasukkan service mysql restartatau /etc/init.d/mysql restart.

Setelah melalui langkah-langkah di atas, masalah saya terpecahkan. Saya jarang mengalami masalah ini, dan mungkin ada cara yang lebih baik, jadi berikan umpan balik konstruktif jika perlu :).

rampok
sumber
1
Saya perhatikan file itu tidak ada di sana dan baru saja me-restart server mysql. Secara otomatis membuat file dan memulai dengan baik. Terima kasih atas petunjuknya.
Sojurn
15

Server mysql Anda mungkin tidak berjalan. Pastikan beroperasi dengan mengetik mysql.server startke terminal.

Moses Wasswa
sumber
15

Periksa "bind-adress"parameter di my.cnf.

Coba dengan perintah:

mysql -h 127.0.0.1 -P 3306 -u root -p
  • -h untuk tuan rumah 127.0.0.1, yaitu localhost

  • -P (perhatikan -P sebagai huruf besar) untuk port 3306, yaitu port default untuk MySQL

Amit Girme
sumber
11

Inilah yang bekerja untuk saya:

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysql restart

Ini menciptakan tautan.

Pengguna
sumber
Tidak bekerja untuk saya :( Ini menciptakan symlink antara dua folder askubuntu.com/a/56340/242873
Michael
11

Jika Anda menggunakan Amazon EC2 , dan Anda mengalami masalah ini, maka Anda hanya perlu melakukan:

sudo yum install mysql-server
sudo service mysqld restart

Amazon EC2 tidak memiliki server yang diinstal (hanya klien yang diinstal), jadi jika Anda perlu menginstalnya secara instan, dan setelah itu coba

 mysql -u root -p

untuk memeriksa apakah itu berhasil.

Murtaza Kanchwala
sumber
Gagal me-restart mysqld.service: Unit mysqld.service tidak ditemukan. Di Ubuntu 16.04
Ketav Chotaliya
9

Saya pikir setiap kali Anda mendapatkan kesalahan

ERROR 2002 (HY000): Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/lib/mysql/mysql.sock'

Saya akan merekomendasikan dulu untuk memeriksa apakah mysqldaemon Anda berjalan ... Sebagian besar waktu tidak akan berjalan secara default. Anda dapat memeriksanya dengan /etc/init.d/mysqld status.

Jika tidak berjalan maka mulailah dulu:

.../etc/init.d/mysqld start.

Saya yakin itu akan bekerja 110%.

vikash kumar singh
sumber
9

Alih-alih menggunakan localhost:

mysql -u myuser -pmypassword -h localhost mydatabase

Gunakan 127.0.0.1

mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase

(perhatikan juga, tidak ada spasi antara -p dan mypassword)

Nikmati :)

mpinvidio
sumber
Anda juga tidak dapat memasukkan kata sandi dari baris perintah untuk keamanan dengan menggunakan baris ini: mysql -u myuser -p -h 127.0.0.1 mydatabase MySQL akan menanyakan kata sandi Anda dan tidak menggemakannya.
DDay
1
Ini menyelesaikannya untuk saya. Namun, saya masih bertanya-tanya mengapa 127.0.0.1bekerja sementara localhosttidak ?!
not2savvy
9

Pastikan Anda memiliki cadangan dari basis data penting dan kemudian coba hapus instalan hal-hal terkait MySQL :

apt-get remove --purge mysql\*

Kemudian pasang kembali :

apt-get install mysql-server mysql-client

Ini bekerja untuk saya dan data disimpan.

Jika PHP MySQL menunjukkan kesalahan, Anda mungkin harus menginstal ulang PHP MySQL :

apt-get install php5-fpm php5-mysql
pengguna3162468
sumber
Saya pikir itu adalah senjata yang fatal. Saya sudah mencoba semuanya tetapi, hanya proposal Anda yang membantu saya. Terima kasih !
Messou
9

Saya juga menghadapi masalah yang sama akan terjadi jika Anda mysql servertidak berjalan secara default lagi akan berhenti setelah beberapa detik sehingga Anda kembali menjalankan $ sudo service mysql start perintah ( ) yang dapat Anda ubah jika tahu.

untuk itu gunakan perintah

$ sudo service mysql start   

(masukkan kata sandi pengguna jika diperlukan karena kami menggunakan sudo) dan kemudian jalankan

$ sudo mysql -u root -p          (put user password if required )

sekarang Anda punya basis data Anda

Roko
sumber
7

Jika instalasi Anda baru-baru ini, Anda harus mengonfirmasi apakah instalasi Anda adalah instalasi SERVER ... sebagai mysql-server-5.5 .. Mungkin Anda hanya menginstal "mysql" .. ini hanya klien, bukan server.

Leandro Souza
sumber
7

Jika Anda memiliki XAMPP yang diinstal pada mesin Linux Anda, cobalah untuk menyalin my.cnffile Anda dari /opt/lampp/etc/my.cnfke /etc/my.cnf.

Kemudian, jalankan mysql -u rootlagi ... Anda sekarang harus memiliki soket yang benar dan dapat menjalankan klien MySQL.

Toni Widiarto
sumber
7

Saya mendapatkan masalah ini juga, tetapi saya baru saja melakukannya:

sudo service mysql restart 

Ini berhasil untuk saya.

Kenny Ong
sumber
7

SAYA MENEMUKAN SOLUSI

Sebelum menembakkan perintah:mysql_secure_installation

  • Langkah 1: sudo systemctl stop mariadb
  • Langkah 2: sudo systemctl start mariadb
  • Langkah 3: mysql_secure_installation

Kemudian akan meminta kata sandi root dan Anda cukup menekan Enter dan mengatur kata sandi root baru Anda.

sagar mahajan
sumber
6

Dalam kasus saya, port default 3306 sedang digunakan oleh beberapa proses lain dan karenanya tidak dimulai. Setelah saya menghentikan layanan lain dan melakukannya sudo service mysql start, itu bekerja dengan baik. BTW, Anda bisa menggunakan sesuatu seperti sudo lsof -Pn -iTCP:3306untuk melihat siapa yang mungkin menggunakan port.

Bhaskar
sumber
6

Dalam kasus saya ini bekerja dengan melakukan beberapa R&D:

Saya dapat terhubung ke MySQL menggunakan

root-debian#mysql -h 127.0.0.1 -u root -p

Tapi itu tidak berhasil mysql -u root -p.

Saya tidak menemukan apa pun bind-addressdi my.cnf . Jadi saya outcommented parameter socket=/var/lib/mysql/mysqld.sockdi my.cnfyang menyebabkan saya masalah dengan login.

Setelah memulai kembali layanan itu baik-baik saja:

root@debian:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.19 MySQL Community Server (GPL)
Swapna Kumar
sumber
6

saya memecahkan masalah ini dengan me-restart mysql

/etc/init.d/mysql stop

dan

/etc/init.d/mysql start

itu dia.

Jazuly
sumber
5

Berdasarkan pengalaman saya katakan bahwa Anda perlu memeriksa apakah server berjalan terlebih dahulu dan kemudian mencoba mengkonfigurasi MySQL. Solusi terakhir adalah menginstal ulang MySQL.

elmaazouz
sumber
5

Buka terminal dan ketik:

sudo apt-get purge mysql-client-core-5.6

sudo apt-get autoremove

sudo apt-get autoclean

sudo apt-get install mysql-client-core-5.5

sudo apt-get install mysql-server  

Klien inti basis data MySQL dan paket Server MySQL akan menjadi versi yang sama 5.5. MySQL Client 5.5 dan MySQL Server 5.5 adalah versi "terbaik" dari paket-paket ini di Ubuntu 14.04 sebagaimana ditentukan oleh pengelola paket.

Jika Anda lebih suka menginstal MySQL Client 5.6 dan MySQL Server 5.6 Anda juga dapat menemukan paket mysql-client-core-5.6 dan mysql-server-5.6 di Pusat Perangkat Lunak Ubuntu. Yang penting adalah bahwa nomor versi klien dan server cocok dalam kedua kasus.

Ini berhasil untuk saya.

Akshay
sumber
5

Periksa apakah Anda memiliki hak yang benar:

sudo chmod 755 /var/lib/mysql/mysql

Saya memiliki masalah yang sama dan ini berhasil untuk saya. Setelah melakukan ini, saya dapat memulai MySQL.

pengguna3599321
sumber
5

Dalam kasus saya, sepertinya saya benar-benar tidak dapat membunuh proses mysql, ketika saya menjalankan

sudo service mysql stop
ps -ef | grep mysql

Proses mysql selalu ada di sana, sepertinya ia memblokir file socket dan proses mysql baru tidak dapat membuatnya sendiri.

jadi ini membantu

cd /var/run
sudo cp mysqld/ mysqld.bc -rf
sudo chown mysql:mysql mysqld.bc/
sudo service mysql stop
sudo cp mysqld.bc/ mysqld -rf
sudo chown mysql:mysql mysqld -R
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

Sekarang saya dapat login menggunakan database

mysql -u root

Kemudian untuk memperbarui kata sandi root:

UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root';
FLUSH PRIVILEGES;

PS : Saya mengalami kesulitan memperbarui root passwod, sepertinya masalah dengan plugin "auth_socket", jadi saya harus membuat pengguna baru dengan hak istimewa penuh

insert into user set `Host` = "localhost", `User` = "super", `plugin` = "mysql_native_password", `authentication_string` = NULL, `password_expired` = "N", `password_lifetime` = NULL, `account_locked` = "N", `Select_priv` = "Y",
`Insert_priv` = "Y", `Update_priv` = "Y", `Delete_priv` = "Y", `Create_priv` = "Y", `Drop_priv` = "Y", `Reload_priv` = "Y", `Shutdown_priv` = "Y", `Process_priv` = "Y", `File_priv` = "Y",
`Grant_priv` = "Y",  `References_priv` = "Y", `Index_priv` = "Y", `Alter_priv` = "Y", `Show_db_priv` = "Y", `Super_priv` = "Y", `Create_tmp_table_priv` = "Y", `Lock_tables_priv` = "Y",
`Execute_priv` = "Y", `Repl_slave_priv` = "Y",  `Repl_client_priv` = "Y",  `Create_view_priv` = "Y", `Show_view_priv` = "Y", `Create_routine_priv` = "Y", `Alter_routine_priv` = "Y",
`Create_user_priv` = "Y",  `Event_priv` = "Y", `Trigger_priv` = "Y", `Create_tablespace_priv` = "Y";

Ini menciptakan "super" pengguna tanpa kata sandi dan kemudian Anda dapat terhubung dengan mysql -u super

Buksy
sumber
terima kasih atas jawabannya dan saya bisa masuk ke mysql, tetapi tidak ada tabel pengguna di database saya.
John Joe
Solusi ini berfungsi. Tetapi sebelum Anda menjalankan pernyataan sql untuk mengubah kata sandi untuk root, Anda harus memilih database. Jalankan pernyataan berikut <br> use mysql;<br> dan Anda sekarang dapat menggunakan <br>UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root'; FLUSH PRIVILEGES;
Charle K.
5

Di server Debian Jessie, solusi kerja saya adalah cukup lakukan

service mysql restart
service mysql reload

sebagai pengguna root

Thomas Webber
sumber