Tôi đã cài đặt MySQL Community Edition 5.5 trên máy cục bộ của mình và tôi muốn cho phép các kết nối từ xa để tôi có thể kết nối từ nguồn bên ngoài.
Làm thế nào tôi có thể làm điều đó?
sudo mysql_secure_installation
. FYI.
Tôi đã cài đặt MySQL Community Edition 5.5 trên máy cục bộ của mình và tôi muốn cho phép các kết nối từ xa để tôi có thể kết nối từ nguồn bên ngoài.
Làm thế nào tôi có thể làm điều đó?
sudo mysql_secure_installation
. FYI.
Câu trả lời:
Điều đó được cho phép theo mặc định trên MySQL.
Những gì bị tắt theo mặc định là root
truy cập từ xa . Nếu bạn muốn kích hoạt điều đó, hãy chạy lệnh SQL này cục bộ:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Và sau đó tìm dòng sau và nhận xét nó trong my.cnf
tệp của bạn , thường xuất hiện /etc/mysql/my.cnf
trên các hệ thống Unix / OSX. Trong một số trường hợp, vị trí của tệp là /etc/mysql/mysql.conf.d/mysqld.cnf).
Nếu đó là một hệ thống Windows, bạn có thể tìm thấy nó trong thư mục cài đặt MySQL, thường là một cái gì đó giống như C:\Program Files\MySQL\MySQL Server 5.5\
và tên tệp sẽ là my.ini
.
Thay đổi dòng
bind-address = 127.0.0.1
đến
#bind-address = 127.0.0.1
Và khởi động lại máy chủ MySQL ( Unix / OSX và Windows ) để những thay đổi có hiệu lực.
my.cnf
tệp và không tìm thấy bind-address
chỉ thị trong đó, hãy lưu ý rằng trong trường hợp của tôi (phiên bản MySQL 14,14 trên Ubuntu 16.04.2), vị trí của tệp là/etc/mysql/mysql.conf.d/mysqld.cnf
Sau khi thực hiện tất cả các thao tác trên, tôi vẫn không thể đăng nhập root
từ xa, nhưng Telnetting đến cổng 3306
đã xác nhận rằng đó MySQL
là chấp nhận kết nối.
Tôi bắt đầu nhìn vào người dùng trong MySQL và nhận thấy có nhiều người dùng root với các mật khẩu khác nhau.
select user, host, password from mysql.user;
Vì vậy, trong MySQL
tôi đặt lại tất cả mật khẩu cho root và cuối cùng tôi có thể đăng nhập từ xa root
.
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
update user set authentication_string=password('YOUR_PASSWORD') where user='root';
Chỉ cần một lưu ý từ kinh nghiệm của tôi, bạn có thể tìm thấy tệp cấu hình theo đường dẫn này /etc/mysql/mysql.conf.d/mysqld.cnf
.
(Tôi đã vật lộn một thời gian để tìm thấy con đường này)
sudo find /etc -iname 'mysql*.cnf'
Trong trường hợp của tôi, tôi đã cố gắng kết nối với một máy chủ mysql từ xa trên cent OS. Sau khi trải qua rất nhiều giải pháp (cấp tất cả các đặc quyền, loại bỏ các ràng buộc ip, cho phép kết nối mạng) vẫn không được giải quyết.
Khi nó bật ra, trong khi xem xét các giải pháp khác nhau, tôi đã bắt gặp iptables, điều đó khiến tôi nhận ra cổng mysql 3306 không chấp nhận kết nối.
Đây là một lưu ý nhỏ về cách tôi đã kiểm tra và giải quyết vấn đề này.
telnet (ip máy chủ mysql) [portNo]
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j CHẤP NHẬN
dịch vụ iptables dừng
Hi vọng điêu nay co ich.
Vui lòng làm theo các bước được đề cập dưới đây để đặt quyền truy cập từ xa ký tự đại diện cho Người dùng MySQL.
(1) Mở cmd.
(2) điều hướng đến đường dẫn C: \ Program Files \ MySQL \ MySQL Server 5.X \ bin và chạy lệnh này.
gốc mys -u -p
(3) Nhập mật khẩu gốc.
(4) Thực hiện lệnh sau để cung cấp sự cho phép.
CẤP TẤT CẢ CÁC ƯU ĐÃI TRÊN *. * ĐẾN 'USERNAME' @ 'IP' được xác định bởi 'PASSWORD';
USERNAME: Tên người dùng bạn muốn kết nối với máy chủ MySQL.
IP: Địa chỉ IP công cộng từ nơi bạn muốn cho phép truy cập vào máy chủ MySQL.
PASSWORD: Mật khẩu của tên người dùng được sử dụng.
IP có thể được thay thế bằng% để cho phép người dùng kết nối từ bất kỳ địa chỉ IP nào.
(5) Xóa sạch các ưu tiên bằng cách thực hiện theo lệnh và thoát.
QUYỀN RIÊNG TƯ;
lối ra; hoặc \ q
Nếu quy trình máy chủ MySQL của bạn chỉ nghe trên 127.0.0.1 hoặc :: 1 thì bạn sẽ không thể kết nối từ xa. Nếu bạn có một bind-address
thiết lập trong/etc/my.cnf
đây có thể là nguồn gốc của vấn đề.
Bạn cũng sẽ phải thêm đặc quyền cho một localhost
người không sử dụng.
127.0.0.1
?
Nếu bạn đã cài đặt MySQL từ brew
nó thì thực sự chỉ nghe trên giao diện cục bộ. Để khắc phục rằng bạn cần chỉnh sửa /usr/local/etc/my.cnf
và thay đổi bind-address
từ 127.0.0.1
thành *
.
Sau đó chạy brew services restart mysql
.
Tất cả quá trình đăng nhập từ xa. Đăng nhập từ xa bị tắt theo mặc định. Bạn cần mở thủ công cho tất cả ip..để cấp quyền truy cập tất cả ip
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
Ip cụ thể
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
sau đó
flush privileges;
Bạn có thể kiểm tra máy chủ và mật khẩu người dùng của bạn
SELECT host,user,authentication_string FROM mysql.user;
Bây giờ nhiệm vụ của bạn là thay đổi điều này
bind-address = 127.0.0.1
Bạn có thể tìm thấy cái này trên
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
nếu bạn không tìm thấy cái này ở đó thì hãy thử cái này
sudo nano /etc/mysql/my.cnf
bình luận trong này
#bind-address = 127.0.0.1
Sau đó khởi động lại Mysql
sudo service mysql restart
Bây giờ hãy tận hưởng đăng nhập từ xa
Chỉ cần FYI tôi đã giải quyết vấn đề này trong nhiều giờ .. cuối cùng tôi đã gọi cho nhà cung cấp dịch vụ lưu trữ của mình và thấy rằng trong trường hợp của tôi sử dụng máy chủ đám mây trong bảng điều khiển cho 1and1, họ có một tường lửa thứ cấp mà bạn phải sao chép và thêm cổng 3306. Sau khi thêm tôi đã vào thẳng ..
Blog này Cách thiết lập máy chủ MySQL trên Mạng cục bộ sẽ hữu ích trong việc thiết lập MySQL
từ đầu
Và đối với những người dùng OS X, hãy lưu ý rằng tham số địa chỉ liên kết thường được đặt trong danh sách khởi chạy chứ không phải trong tệp my.ini. Vì vậy, trong trường hợp của tôi, tôi loại bỏ <string>--bind-address=127.0.0.1</string>
khỏi /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
.
~/Library/LaunchAgents
Nếu mysqld
có một địa chỉ liên kết được đặt thành loopback / địa chỉ cục bộ (ví dụ 127.0.0.1
), máy chủ sẽ không thể truy cập được từ các máy chủ từ xa, vì không thể truy cập giao diện loopback từ bất kỳ máy chủ từ xa nào.
Đặt tùy chọn này thành 0.0.0.0
( ::
cho IPv4 + 6) để chấp nhận kết nối từ bất kỳ máy chủ nào hoặc đến một địa chỉ có thể truy cập bên ngoài khác nếu bạn muốn chỉ cho phép kết nối trên một giao diện.
đôi khi cần sử dụng tên của pc trên windows
Bước đầu tiên) đặt tập tin cấu hình của mysql:
mysqld.cnf SET bind-address = 0.0.0.0
(để cho phép kết nối lại qua tcp / ip)
Bước thứ hai) làm cho người dùng trong mysql, người dùng bảng, với tên của pc trên các giá trị của windows , KHÔNG ip
Cho phép truy cập root từ xa có thể nguy hiểm. Sẽ tốt hơn nếu bạn thiết lập tài khoản người dùng với nhiều quyền hạn chế hơn. Ba bước sau đây nên làm điều đó.
Đảm bảo rằng dòng bắt đầu bằng bind-address ...
ít nhất được nhận xét trong tệp my.ini hoặc my.cnf của bạn. Nếu nó không tồn tại, di chuyển trên. Bạn có thể tìm thấy tệp này trong C:\ProgramData\MySQL\MySQL Server 8.0
Windows.
Sau đó, kiểm tra xem tài khoản người dùng mà bạn đang thiết lập kết nối không có localhost
trong trường Giới hạn đối sánh máy chủ. Mặc dù không được khuyến nghị, thay vào đó, bạn có thể đưa %
vào trường đó cho mục đích thử nghiệm. Bạn có thể thực hiện việc này bằng cách mở kết nối cục bộ đến máy chủ bằng MySQL Workbench, sau đó truy cập Máy chủ> Người dùng và Đặc quyền từ thanh menu và tìm tài khoản người dùng bạn muốn kết nối.
Trường "Giới hạn đối sánh máy chủ" là trường không cho phép bạn kết nối không cục bộ. Tức là nó giới hạn các kết nối được chấp nhận cho một mẫu địa chỉ IP. Tốt nhất, bạn nên truy cập máy chủ MySQL từ một địa chỉ IP tĩnh hoặc mạng con, để bạn có thể hạn chế nhất có thể.