Không thể kết nối qua MySQL Workbench với localhost trong Ubuntu 16.04 (root không mật khẩu)


17

Trang web của Oracle dường như ngụ ý rằng nó chỉ hoạt động vào ngày 15 và 14. http://dev.mysql.com/doads/workbench/

Ngoài ra, hai trong số các máy Ubuntu 16.04 của tôi dường như không thể kết nối (Lỗi truy cập bị từ chối đối với root)

Hình ảnh

Nó cài đặt ổn. Nó mở được. Nhưng nó sẽ không kết nối với localhost.

Có ai gặp may mắn không?


Bạn đã xây dựng nó từ nguồn? Lỗi chính xác được đưa ra là gì? Tương tự như khi bạn chỉ định một mật khẩu không chính xác?

Vâng, nó là tương tự. Nhưng root không có mật khẩu. Và tôi có thể kết nối với root trên dòng lệnh một cách chính xác. Và tôi đã kiểm tra lại tất cả các đặc quyền và chạy FLUSH PRIVILEGES; vào thời điểm này Tôi tò mò liệu có ai có thể kết nối với localhost từ 16 không, vì trang web của Oracle chỉ nói rõ ràng 14 và 15
Jonathan

Tôi không thấy Oracle đưa ra tuyên bố rằng nó không hoạt động, tôi chỉ không thấy nhị phân cho Xenial. Tuy nhiên, tôi thấy mysql-workbench ở đây, tests.ubfox.com/xenial/mysql-workbench . Lỗi đó có vẻ không phải là lỗi tương thích phần mềm. Bật đăng nhập vào mysql và tăng mức ghi nhật ký lên 2 và xem nhật ký có hiển thị yêu cầu của bạn không.

@ bc2946088 mysql-workbenchnằm trong kho vũ trụ cho liên kết 16.04
Videonauth

Bạn đã kiểm tra bất kỳ trong số 4 lựa chọn? ;-) WB hoạt động hoàn toàn tốt đối với tôi (với 5,7 btw). Bằng chứng dưới đây.
Rinzwind

Câu trả lời:


27

Vấn đề có thể là do xác thực ổ cắm được bật cho người dùng root theo mặc định khi không có mật khẩu nào được đặt, trong quá trình nâng cấp lên 16.04. Sự cảnh báo quan trọng này được ghi lại trong ghi chú phát hành 16.04 :

Hành vi mật khẩu khi mật khẩu root MySQL trống đã thay đổi. Đóng gói bây giờ cho phép xác thực ổ cắm khi mật khẩu root của MySQL trống. Điều này có nghĩa là người dùng không phải root không thể đăng nhập với tư cách là người dùng root MySQL với mật khẩu trống.

Vì bất kỳ lý do gì, Bàn làm việc MySQL đi kèm với 16.04 không hoạt động tốt với máy chủ MySQL, ít nhất là đối với tôi. Tôi đã thử sử dụng "Ổ cắm / ống cục bộ" để kết nối theo một số cách khác nhau nhưng không có kết quả.

Giải pháp là trở lại xác thực mật khẩu riêng. Bạn có thể làm điều này bằng cách đăng nhập vào MySQL bằng xác thực ổ cắm bằng cách thực hiện:

sudo mysql -u root

Sau khi đăng nhập:

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

sẽ trở lại xác thực mật khẩu gốc (mặc định cũ). Nếu bạn đã thử một số phương pháp khác để khắc phục sự cố, bạn sẽ muốn đảm bảo trường "plugin" trong mysql.user được đặt thành "auth_token", có thể yêu cầu sử dụng mysqld_safe để đăng nhập vào MySQL trong trường hợp bạn Tôi đã tăng cường với mọi thứ, như tôi đã làm.

Tín dụng cho bài viết trên blog của Miguel Nieto cho giải pháp này.


Thật tuyệt vời, tôi sẽ không bao giờ nhận ra điều này.
Jonathan

Điều này đã sửa nó, nhưng lần tiếp theo tôi chạy apt update thì nó lại bị hỏng.
Jonathan

Đầu ra cập nhật apt là gì?
Mike M

Tôi đã không nhìn thấy nó, bởi vì tôi đã không nhận thấy cho đến lần tiếp theo tôi chạy mysql, rất lâu sau đó
Jonathan

Tôi tự hỏi liệu đây là thứ Ubuntu 16.04 hay thứ mys mys 5.7 (chính Oracle hay Canonical đã thực hiện thay đổi này?)
Jonathan

22

MySQL 5.7 trở lên không hỗ trợ kết nối dưới dạng "root" mysql-workbenchvì vậy bạn phải tạo một người dùng bình thường và kết nối thông qua đó.

sudo mysql -u root -p

Tạo một người dùng có tên "admin" và sử dụng nó để kết nối mysql-workbench.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

Câu trả lời này là hoàn hảo cho tôi, cảm ơn Jonathan.
Chris Evans

2
Điều này hoạt động cho Ubuntu 18.04
tadeubarbosa

Hoàn hảo. Cảm ơn bạn (18.04.2)
Ron Nuni

4

Câu hỏi này có thể được hai tuổi nhưng công việc của tôi với mysql-workbench tối nay dường như đã cho tôi câu trả lời cho nó.

người dùng root bây giờ người dùng xác thực auth_socket theo mặc định. Cách duy nhất root có thể có được quyền truy cập là bằng cách đăng nhập với quyền root.

Tôi tìm thấy điều này bằng cách chạy mysql -u rootcả người dùng root và người dùng chuẩn.

Nó sẽ không hoạt động theo người dùng tiêu chuẩn.

Vì vậy, câu hỏi tiếp theo của tôi là - mysql-workbench chạy như thế nào. Hóa ra nó chạy như người dùng chuẩn theo mặc định. Để có được nó chạy như người dùng root, nó phải được chạy từ root. Vì vậy, tôi đã đi vào người dùng root CLI và gõ 'mysql-workbench'.

Sau đó tôi đã phải đi vào cài đặt cho người dùng root như được hiển thị ở đây. Vị trí tệp hợp lệ cho cài đặt Ubuntu 18.04.

Cài đặt kết nối gốc mysql-workbench.

Nếu vị trí ổ cắm đó không hợp lệ thì bạn sẽ cần phải đi vào mysql CLI từ root hoặc sudo và chạy lệnh sau.

Lệnh MySQL CLI để tìm ổ cắm.

Sau khi bạn có các cài đặt chính xác kiểm tra kết nối. Nó sẽ thành công và bạn đã sẵn sàng để đi.


Cảm ơn vì điều này! Tôi không cần phải hoàn nguyên các thay đổi liên quan đến bảo mật để xác thực để hỗ trợ một công cụ cũ hơn, khi tôi chỉ có thể yêu cầu công cụ đó kết nối bằng phương pháp mới hơn.
Aaron

Tôi có đạt được kết nối địa phương thông qua cách này không? Tôi không hiểu tại sao chúng ta không thể kết nối thông qua TCP / IP.
john gonidelis

2

Hoạt động tốt cho tôi và tôi không làm gì đặc biệt. Đã cài đặt mysql-server-5.7và bàn làm việc cả từ dòng lệnh và thiết lập người dùng bằng mật khẩu và thiết lập các quyền cơ sở dữ liệu bình thường (cũng với phương thức bình thường).

nhập mô tả hình ảnh ở đây

Và với một cơ sở dữ liệu và bảng:

nhập mô tả hình ảnh ở đây


Hấp dẫn. Yêu các tài liệu tham khảo thế giới. Khi tôi cấu hình lại các gói mysql, tôi không nhận được lời nhắc thay đổi mật khẩu. Phải không Tôi đang nghiêng về suy nghĩ rằng tôi có một cài đặt bị hỏng hoặc một số xung đột. Tôi nghĩ rằng tôi nên có một lời nhắc để thay đổi mật khẩu root.
Jonathan

1

Tạo một tài khoản người dùng với các đặc quyền quản trị phù hợp có thể kết nối thông qua bàn làm việc mysql bằng cách sử dụng plugin auth_socket. Lưu ý rằng điều này không hoạt động đối với các kết nối gốc đến máy chủ mysql .

Đăng nhập vào mysql từ một phiên cuối:

$sudo mysql

Nếu bạn có thể làm điều này thì plugin auth_socket được bật và tài khoản root đang xác thực bằng cách sử dụng plugin này. Lưu ý rằng đây là thiết lập mặc định khi cài đặt mysql trên ubfox sau khi chạy tập lệnh cài đặt an toàn.

Trước tiên, hãy tạo người dùng mysql cho tài khoản của bạn 'valerie':

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

Cho phép đặc quyền quản trị cho tài khoản:

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

Thoát khỏi vỏ:

mysql> exit

Sau đó, trong bàn làm việc mysql:

  1. Tạo kết nối mới
  2. Chọn phương thức kết nối là Ổ cắm / Ống cục bộ
  3. Đặt Đường dẫn ổ cắm / ống thành: /var/run/mysqld/mysqld.sock (lưu ý rằng đây là đường dẫn cho hệ thống Debian / Ubuntu và thay đổi cho các hương vị khác của Linux)
  4. Đặt tên người dùng ('valerie' trong ví dụ này)

Sau đó, bạn có thể kết nối với máy chủ mysql bằng kết nối này.


0

thử đi

chọn cơ sở dữ liệu mysql

1: sử dụng mysql;

2: CẬP NHẬT người dùng đặt plugin = 'mysql_native_password' trong đó Người dùng = 'root';

3: đặc quyền tuôn ra;

4: thoát;

~ $ sudo dịch vụ khởi động lại mysql


0

Máy chủ MySQL trên máy chủ AWS chạy Ubuntu 16.04; mysql-workbench trên máy tính xách tay Ubuntu 16.04; sử dụng kết nối KeyPair.

Sau khi thiết lập kết nối Kiểm tra db đã hoạt động. Nhưng kết nối thực tế luôn thất bại với một thông điệp giống như thông báo được đăng bởi Jonathan Leaders. Kiểm tra nhật ký tại ~/.mysql/workbench/logvà tìm thấy một vài thông báo "cho phép từ chối" .

Bây giờ tôi có thể làm cho mysql-workbench hoạt động với: sudo mysql-workbench

Và sau này tôi có thể đi và chmodcác thư mục cần sự cho phép.


2
Đây có phải là một câu trả lời cho câu hỏi?
George Udosen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.