Tidak dapat terhubung melalui MySQL Workbench ke localhost di Ubuntu 16.04 (rootless password)

17

Situs web Oracle tampaknya menyiratkan itu hanya berfungsi pada 15 dan 14. http://dev.mysql.com/downloads/workbench/

Juga dua dari mesin Ubuntu 16.04 saya sepertinya tidak dapat terhubung (Access is Denied errors for root)

Gambar

Menginstalnya oke. Terbuka oke. Tetapi itu tidak akan terhubung ke localhost.

Adakah yang beruntung?

Jonathan
sumber
Apakah Anda membangunnya dari sumber? Apa kesalahan sebenarnya yang diberikan? Mirip dengan ketika Anda menentukan kata sandi yang salah?
Ya itu mirip. Tetapi root tidak memiliki kata sandi. Dan saya dapat terhubung ke root pada command line dengan benar. Dan saya gandakan memeriksa semua hak dan berlari FLUSH PRIVILEGES; Pada titik ini saya ingin tahu apakah ada yang bisa terhubung ke localhost dari 16, karena situs Oracle secara eksplisit mengatakan hanya 14 dan 15
Jonathan
Saya tidak melihat Oracle membuat klaim itu tidak berfungsi, saya hanya tidak melihat biner untuk Xenial. Namun saya melihat mysql-workbench di sini, packages.ubuntu.com/xenial/mysql-workbench . Kesalahan itu sepertinya bukan kesalahan kompatibilitas perangkat lunak. Aktifkan logging pada mysql dan tingkatkan logging ke 2 dan lihat apakah log tersebut menunjukkan permintaan Anda.
@ bc2946088 mysql-workbenchada di repositori semesta untuk tautan
Videonauth
apakah Anda memeriksa salah satu dari 4 opsi? ;-) WB berfungsi dengan baik untuk saya (dengan 5,7 btw). Bukti di bawah ini.
Rinzwind

Jawaban:

27

Masalah ini kemungkinan karena otentikasi soket diaktifkan untuk pengguna root secara default ketika tidak ada kata sandi yang ditetapkan, selama peningkatan ke 16,04. Peringatan penting ini didokumentasikan dalam catatan rilis 16.04 :

Perilaku kata sandi saat kata sandi root MySQL kosong telah berubah. Pengemasan sekarang memungkinkan otentikasi soket ketika kata sandi root MySQL kosong. Ini berarti bahwa pengguna non-root tidak dapat login sebagai pengguna root MySQL dengan kata sandi kosong.

Untuk alasan apa pun, MySQL Workbench yang datang dengan 16,04 tidak bekerja di luar kotak dengan server MySQL, setidaknya untuk saya. Saya mencoba menggunakan "Local Socket / Pipe" untuk menghubungkan dalam berbagai cara tetapi tidak berhasil.

Solusinya adalah kembali ke otentikasi kata sandi asli. Anda dapat melakukan ini dengan masuk ke MySQL menggunakan otentikasi soket dengan melakukan:

sudo mysql -u root

Setelah login:

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

yang akan kembali ke otentikasi kata sandi (default lama) asli. Jika Anda telah mencoba beberapa metode lain untuk memperbaiki masalah ini, Anda harus memastikan bahwa bidang "plugin" di mysql.user disetel ke "auth_token", yang mungkin mengharuskan menggunakan mysqld_safe untuk masuk ke MySQL jika Anda Sudah bermain-main dengan hal-hal, seperti yang saya lakukan.

Kredit untuk posting blog Miguel Nieto ini untuk solusi ini.

Mike M
sumber
Luar biasa, saya tidak akan pernah menyadari ini.
Jonathan
Ini memperbaikinya, tetapi waktu berikutnya saya menjalankan pembaruan apt rusak lagi.
Jonathan
Apa output pembaruan yang tepat?
Mike M
Saya tidak melihatnya, karena saya tidak melihat sampai waktu berikutnya saya menjalankan mysql, jauh di kemudian hari
Jonathan
Saya ingin tahu apakah ini adalah Ubuntu 16.04 atau mysql 5.7 (apakah Oracle atau Canonical yang membuat perubahan ini?)
Jonathan
22

MySQL 5.7 dan yang lebih baru tidak mendukung koneksi sebagai "root" mysql-workbenchsehingga Anda harus membuat pengguna normal dan terhubung melalui itu.

sudo mysql -u root -p

Buat pengguna bernama "admin" dan gunakan itu untuk terhubung mysql-workbench.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
Jonathan
sumber
Jawaban ini sangat cocok untuk saya, terima kasih Jonathan.
Chris Evans
2
Ini berfungsi untuk Ubuntu 18.04
tadeubarbosa
Sempurna. Terima kasih (18.04.2)
Ron Nuni
4

Pertanyaan ini mungkin berumur dua tahun tetapi pekerjaan saya dengan mysql-workbench malam ini tampaknya telah memberi saya jawaban untuk itu.

pengguna root sekarang pengguna otentikasi auth_socket secara default. Satu-satunya cara root dapat memperoleh akses adalah dengan login sebagai root.

Saya menemukan ini dengan menjalankan mysql -u rootkeduanya sebagai pengguna root dan pengguna standar.

Itu tidak akan berfungsi di bawah pengguna standar.

Jadi pertanyaan saya berikutnya adalah - pengguna apa yang dijalankan oleh mysql-workbench. Ternyata itu berjalan sebagai pengguna standar secara default. Untuk menjalankannya sebagai pengguna root, ia harus dijalankan dari root. Jadi saya pergi ke CLI pengguna root dan ketik 'mysql-workbench'.

Saya kemudian harus masuk ke pengaturan untuk pengguna root seperti yang ditunjukkan di sini. Lokasi file valid untuk instalasi ubuntu 18.04.

Pengaturan koneksi root mysql-workbench.

Jika lokasi soket itu tidak valid maka Anda harus masuk ke mysql CLI dari root atau sudo dan jalankan perintah berikut.

Perintah MySQL CLI untuk menemukan soket.

Setelah Anda memiliki pengaturan yang benar, uji koneksi. Itu harus berhasil dan Anda siap untuk pergi.

George Tasker
sumber
Terima kasih untuk ini! Saya seharusnya tidak harus mengembalikan perubahan terkait keamanan ke otentikasi untuk mendukung alat yang lebih lama, ketika saya bisa mengatakan alat itu untuk terhubung menggunakan metode yang lebih baru.
Aaron
Apakah saya mencapai koneksi lokal melalui cara ini? Saya tidak mengerti mengapa kita tidak bisa terhubung melalui TCP / IP.
john gonidelis
2

Bekerja dengan baik untuk saya dan saya tidak melakukan sesuatu yang istimewa. Diinstal mysql-server-5.7dan meja kerja baik dari baris perintah dan mengatur pengguna dengan kata sandi dan mengatur izin basis data normal (juga dengan metode normal).

masukkan deskripsi gambar di sini

Dan dengan database dan tabel:

masukkan deskripsi gambar di sini

Rinzwind
sumber
Menarik. Sukai referensi discworld. Ketika saya mengkonfigurasi ulang paket mysql, saya tidak mendapatkan prompt untuk mengubah kata sandi. Apakah kamu? Saya cenderung berpikir saya memiliki instalasi yang rusak atau konflik. Saya pikir saya harus mendapatkan prompt untuk mengubah kata sandi root.
Jonathan
1

Buat akun pengguna dengan hak administratif yang sesuai yang dapat terhubung melalui meja kerja mysql menggunakan plugin auth_socket. Perhatikan bahwa ini tidak berfungsi untuk koneksi root ke server mysql .

Masuk ke mysql dari sesi terminal:

$sudo mysql

Jika Anda dapat melakukan ini maka plugin auth_socket diaktifkan dan akun root diautentikasi menggunakan plugin ini. Perhatikan bahwa ini adalah pengaturan default ketika menginstal mysql di ubuntu setelah menjalankan skrip instalasi aman.

Pertama-tama buat pengguna mysql untuk 'valerie' akun Anda:

mysql> CREATE USER 'valerie'@'localhost' IDENTIFIED WITH auth_socket;

Aktifkan hak administratif untuk akun:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'valerie'@'localhost' WITH GRANT OPTION;

Keluar dari shell:

mysql> exit

Kemudian di meja kerja mysql:

  1. Buat koneksi baru
  2. Pilih metode koneksi sebagai Socket / Pipa Lokal
  3. Atur Socket / Pipe Path ke: /var/run/mysqld/mysqld.sock (perhatikan bahwa ini adalah path untuk sistem Debian / Ubuntu dan perubahan untuk rasa Linux lainnya)
  4. Tetapkan nama pengguna ('valerie' dalam contoh ini)

Anda harus dapat terhubung ke server mysql dengan koneksi ini.

David
sumber
0

coba ini

pilih database mysql

1: gunakan mysql;

2: UPDATE set pengguna plugin = 'mysql_native_password' di mana Pengguna = 'root';

3: hak istimewa flush;

4: keluar;

~ $ sudo service restart mysql

URI
sumber
0

Server MySQL pada host AWS yang menjalankan Ubuntu 16.04; mysql-workbench di laptop Ubuntu 16.04; menggunakan koneksi KeyPair.

Setelah mengatur koneksi Test db berfungsi. Tetapi koneksi yang sebenarnya selalu gagal dengan pesan seperti yang diposting oleh Jonathan Leaders. Memeriksa log di ~/.mysql/workbench/logdan menemukan beberapa pesan "izin ditolak" .

Sekarang saya bisa membuat mysql-workbench bekerja dengan: sudo mysql-workbench

Dan nanti saya bisa pergi dan chmoddirektori membutuhkan izin.

Usman Suleman
sumber
2
Apakah ini jawaban untuk pertanyaan itu?
George Udosen