Thật kỳ lạ, mặc dù có rất nhiều câu trả lời [tương tự], nhưng không ai đề xuất điều này
Bạn có thể tạo tệp
CREATE USER 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
5 trong thư mục $HOME của mình, thư mục này chứa[client]
host=127.0.0.1
port=3306
database=google
user=root
password=root
Và bạn sẽ chỉ phải làm
$> mysql
Để kết nối với cơ sở dữ liệu đó
Một vài lưu ý chính cần xem xét
- Lưu trữ mật khẩu trong tệp đó không phải là một ý tưởng hay. Tệ nhất, hãy làm một
6. Nhưng tốt nhất là lưu trữ mật khẩu ở nơi khác. Các chủ đề khác trên StackOverflow cung cấp câu trả lời tuyệt vời cho điều đóCREATE USER 'root'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
- Bạn có thể tùy chỉnh dữ liệu trong tệp đó và để phần còn lại cho bạn. Chẳng hạn, xóa dòng
7 cho phép bạn thực hiệnCREATE USER 'root'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
8CREATE USER 'root'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
Nếu bạn không muốn sử dụng đường hầm ssh, trong tôi. cnf hoặc mysqld. cnf bạn phải thay đổi 127. 0. 0. 1 với địa chỉ IP cục bộ của bạn [192. 168. 1. 100] để có quyền truy cập qua Lan. ví dụ dưới đây
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Tìm kiếm địa chỉ liên kết trong tôi. cnf hoặc mysqld. cnf
bind-address = 127.0.0.1
và thay đổi 127. 0. 0. 1 đến 192. 168. 1. 100 [địa chỉ ip cục bộ]
bind-address = 192.168.1.100
Để áp dụng thay đổi bạn đã thực hiện, phải khởi động lại máy chủ mysql bằng lệnh tiếp theo
sudo /etc/init.d/mysql restart
Sửa đổi quyền root của người dùng để truy cập lan [ chạy các truy vấn bên dưới trong máy chủ từ xa mà bạn muốn có quyền truy cập ]
root@192.168.1.100:~$ mysql -u root -p
..
CREATE USER 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Nếu bạn chỉ muốn có quyền truy cập từ địa chỉ ip cụ thể, hãy thay đổi 'root'@'%' thành 'root'@'[địa chỉ ip hoặc tên máy chủ]'
Cam kết này không thuộc về bất kỳ nhánh nào trên kho lưu trữ này và có thể thuộc về một nhánh bên ngoài kho lưu trữ
Bạn không thể thực hiện hành động đó vào lúc này
Bạn đã đăng nhập bằng tab hoặc cửa sổ khác. Tải lại để làm mới phiên của bạn. Bạn đã đăng xuất trong một tab hoặc cửa sổ khác. Tải lại để làm mới phiên của bạn
mysql [từ MariaDB 10. 4. 6, còn được gọi là mariadb] là một trình bao SQL đơn giản [có khả năng đọc GNU]. Nó hỗ trợ sử dụng tương tác và không tương tác. Khi được sử dụng tương tác, kết quả truy vấn được trình bày ở định dạng bảng ASCII. Khi được sử dụng không tương tác [ví dụ: dưới dạng bộ lọc], kết quả được trình bày ở định dạng được phân tách bằng tab. Định dạng đầu ra có thể được thay đổi bằng các tùy chọn lệnh
Nếu bạn gặp sự cố do không đủ bộ nhớ cho tập hợp kết quả lớn, hãy sử dụng tùy chọn
mysql --user=user_name --password=your_password db_name1. Điều này buộc mysql truy xuất kết quả từ máy chủ một hàng tại một thời điểm thay vì truy xuất toàn bộ tập kết quả và đệm nó trong bộ nhớ trước khi hiển thị. Điều này được thực hiện bằng cách trả về tập kết quả bằng cách sử dụng hàm API
mysql --user=user_name --password=your_password db_name2 C trong thư viện máy khách/máy chủ thay vì
mysql --user=user_name --password=your_password db_name3
Sử dụng mysql rất dễ dàng. Gọi nó từ lời nhắc của trình thông dịch lệnh của bạn như sau
$> mysql
1Hoặc
________số 8Sau đó nhập câu lệnh SQL, kết thúc câu lệnh bằng dấu “;”, \g hoặc \G rồi nhấn Enter
Nhập Control-C khiến mysql cố gắng hủy câu lệnh hiện tại. Nếu điều này không thể thực hiện được hoặc Control-C được nhập lại trước khi câu lệnh bị tắt, mysql sẽ thoát
Bạn có thể thực thi các câu lệnh SQL trong một tệp script [tệp bó] như thế này
$> mysql
3Từ MariaDB 10. 4. 6,
mysql --user=user_name --password=your_password db_name4 có sẵn dưới dạng liên kết tượng trưng tới
mysql --user=user_name --password=your_password db_name5
Từ MariaDB 10. 5. 2,
mysql --user=user_name --password=your_password db_name5 là liên kết tượng trưng và
mysql --user=user_name --password=your_password db_name4 tên nhị phân
sử dụng mysql
Lệnh sử dụng
mysql --user=user_name --password=your_password db_name5 và cú pháp chung là
$> mysql
9Tùy chọn
mysql --user=user_name --password=your_password db_name5 hỗ trợ các tùy chọn sau
Tệp tùy chọn
Ngoài việc đọc các tùy chọn từ dòng lệnh,
mysql --user=user_name --password=your_password db_name5 cũng có thể đọc các tùy chọn từ các tệp tùy chọn. Nếu một tùy chọn không xác định được cung cấp cho
mysql --user=user_name --password=your_password db_name5 trong tệp tùy chọn, thì tùy chọn đó sẽ bị bỏ qua
Các tùy chọn sau đây liên quan đến cách các công cụ dòng lệnh của MariaDB xử lý các tệp tùy chọn. Chúng phải được đưa ra làm đối số đầu tiên trên dòng lệnh
Trong MariaDB 10. 2 trở lên,
mysql --user=user_name --password=your_password db_name5 được liên kết với MariaDB Connector/C. Tuy nhiên, Trình kết nối MariaDB/C chưa xử lý việc phân tích cú pháp các tệp tùy chọn cho máy khách này. Điều đó vẫn được thực hiện bởi mã phân tích tệp tùy chọn máy chủ. Xem MDEV-19035 để biết thêm thông tin
Nhóm tùy chọn
mysql --user=user_name --password=your_password db_name5 đọc các tùy chọn sau đây từ các tệp tùy chọn
Cách chỉ định giao thức nào sẽ sử dụng khi kết nối với máy chủ mysqld
Bạn có thể buộc giao thức nào được sử dụng để kết nối với máy chủ
$> mysql
34 bằng cách cung cấp cho tùy chọn $> mysql
35 một trong các giá trị sau. ________ 136, ________ 137, ________ 138 hoặc ________ 139Nếu
$> mysql
35 không được chỉ định, trước MariaDB 10. 6. 1, các thuộc tính kết nối dòng lệnh không bắt buộc giao thức sẽ bị bỏ quaTừ MariaDB 10. 6. 1, thuộc tính kết nối được chỉ định thông qua dòng lệnh [e. g.
$> mysql
91] sẽ buộc loại của nó. Giao thức phù hợp với thuộc tính kết nối tương ứng được sử dụng, e. g. kết nối TCP/IP được tạo khi $> mysql
92 được chỉ địnhNếu nhiều hoặc không có thuộc tính kết nối nào được chỉ định thông qua dòng lệnh, thì điều sau đây sẽ xảy ra
Linux/Unix
- Nếu
93 không được chỉ định hoặc$> mysql
93 là$> mysql
95, thì ổ cắm Unix được sử dụng$> mysql
- Trong các trường hợp khác [_______193 được đưa ra và nó không phải là ____195] thì kết nối TCP/IP thông qua tùy chọn
98 được sử dụng$> mysql
Lưu ý rằng
$> mysql
95 là một giá trị đặc biệt. Sử dụng 127. 0. 0. 1 không phải là điều tương tự. Cái sau sẽ kết nối với máy chủ mysqld thông qua TCP/IPcác cửa sổ
- Nếu
10 được chỉ định vàbind-address = 192.168.1.100
93 không được chỉ định hoặc$> mysql
93 là$> mysql
95 thì kết nối sẽ diễn ra thông qua bộ nhớ dùng chung$> mysql
- Nếu
10 không được chỉ định vàbind-address = 192.168.1.100
93 không được chỉ định hoặc$> mysql
93 là$> mysql
95 thì kết nối sẽ diễn ra thông qua các cửa sổ có tên là đường ống$> mysql
- Các đường ống được đặt tên cũng sẽ được sử dụng nếu thư viện máy khách
18 /bind-address = 192.168.1.100
19 phát hiện ra rằng máy khách không hỗ trợ TCP/IPbind-address = 192.168.1.100
- Trong các trường hợp khác thì kết nối TCP/IP thông qua tùy chọn
98 được sử dụng$> mysql
Cách kiểm tra giao thức nào được sử dụng
Lệnh
sudo /etc/init.d/mysql restart
21 hiển thị cho bạn thông tin về giao thức nào được sử dụngbind-address = 192.168.1.100
1lệnh mysql
Ngoài ra còn có một số lệnh có thể chạy bên trong máy khách. Lưu ý rằng tất cả các lệnh văn bản phải ở dòng đầu tiên và kết thúc bằng ';'
Tệp mysql_history
Trên Unix, máy khách mysql ghi một bản ghi các câu lệnh đã thực thi vào một tệp lịch sử. Theo mặc định, tệp này có tên là
sudo /etc/init.d/mysql restart
22 và được tạo trong thư mục chính của bạn. Để chỉ định một tệp khác, hãy đặt giá trị của biến môi trường MYSQL_HISTFILECác. Tệp mysql_history phải được bảo vệ bằng chế độ truy cập hạn chế vì thông tin nhạy cảm có thể được ghi vào tệp, chẳng hạn như văn bản của câu lệnh SQL có chứa mật khẩu
Nếu bạn không muốn duy trì tệp lịch sử, trước tiên hãy xóa. mysql_history nếu nó tồn tại, sau đó sử dụng một trong các kỹ thuật sau
- Đặt biến MYSQL_HISTFILE thành/dev/null. Để cài đặt này có hiệu lực mỗi khi bạn đăng nhập, hãy đặt cài đặt vào một trong các tệp khởi động của trình bao của bạn
- Tạo ra. mysql_history như một liên kết tượng trưng đến/dev/null
sudo /etc/init.d/mysql restart
2Bạn chỉ cần làm điều này một lần
dấu nhắc Lệnh
Lệnh nhắc cấu hình lại dấu nhắc mặc định
sudo /etc/init.d/mysql restart
23. Chuỗi để xác định dấu nhắc có thể chứa các chuỗi đặc biệt saumẹo mysql
Phần này mô tả một số kỹ thuật có thể giúp bạn sử dụng
sudo /etc/init.d/mysql restart
24 hiệu quả hơnHiển thị kết quả truy vấn theo chiều dọc
Một số kết quả truy vấn dễ đọc hơn nhiều khi được hiển thị theo chiều dọc, thay vì ở định dạng bảng ngang thông thường. Truy vấn có thể được hiển thị theo chiều dọc bằng cách kết thúc truy vấn bằng \G thay vì dấu chấm phẩy. Ví dụ: các giá trị văn bản dài hơn bao gồm các dòng mới thường dễ đọc hơn nhiều với đầu ra dọc
sudo /etc/init.d/mysql restart
8Đối với người mới bắt đầu, một tùy chọn khởi động hữu ích là
sudo /etc/init.d/mysql restart
25 [hoặc sudo /etc/init.d/mysql restart
26, có tác dụng tương tự]. Nó hữu ích cho các trường hợp khi bạn có thể đưa ra tuyên bố sudo /etc/init.d/mysql restart
27 nhưng lại quên điều khoản sudo /etc/init.d/mysql restart
28. Thông thường, một câu lệnh như vậy sẽ xóa tất cả các hàng khỏi bảng. Với sudo /etc/init.d/mysql restart
25, bạn chỉ có thể xóa các hàng bằng cách chỉ định các giá trị chính xác định chúng. Điều này giúp ngăn ngừa tai nạnKhi bạn sử dụng tùy chọn
sudo /etc/init.d/mysql restart
25, mysql sẽ đưa ra câu lệnh sau khi nó kết nối với máy chủ MariaDBroot@192.168.1.100:~$ mysql -u root -p
5Câu lệnh SET có các tác dụng sau
- Bạn không được phép thực thi câu lệnh CẬP NHẬT hoặc XÓA trừ khi bạn chỉ định ràng buộc khóa trong mệnh đề WHERE hoặc cung cấp mệnh đề GIỚI HẠN [hoặc cả hai]. Ví dụ
root@192.168.1.100:~$ mysql -u root -p
6- Máy chủ giới hạn tất cả các kết quả large
81 ở 1.000 hàng trừ khi câu lệnh bao gồm mệnh đềsudo /etc/init.d/mysql restart
82sudo /etc/init.d/mysql restart
- Máy chủ hủy bỏ các câu lệnh
81 nhiều bảng có thể cần kiểm tra hơn 1.000.000 tổ hợp hàngsudo /etc/init.d/mysql restart
Để chỉ định các giới hạn khác với 1.000 và 1.000.000, bạn có thể ghi đè các giá trị mặc định bằng cách sử dụng tùy chọn
sudo /etc/init.d/mysql restart
84 và sudo /etc/init.d/mysql restart
85CREATE USER 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
2Vô hiệu hóa tự động kết nối lại mysql
Nếu máy khách mysql mất kết nối với máy chủ trong khi gửi câu lệnh, nó sẽ ngay lập tức và tự động cố gắng kết nối lại một lần với máy chủ và gửi lại câu lệnh. Tuy nhiên, ngay cả khi mysql kết nối lại thành công, kết nối đầu tiên của bạn đã kết thúc và tất cả các đối tượng và cài đặt phiên trước đó của bạn sẽ bị mất. các bảng tạm thời, chế độ tự động gửi và các biến phiên và do người dùng xác định. Ngoài ra, mọi giao dịch hiện tại sẽ quay trở lại. Hành vi này có thể gây nguy hiểm cho bạn, như trong ví dụ sau khi máy chủ bị tắt và khởi động lại giữa câu lệnh thứ nhất và câu lệnh thứ hai mà bạn không biết
mysql --user=user_name --password=your_password db_name0
Biến người dùng @a đã bị mất khi kết nối và sau khi kết nối lại, nó không được xác định. Nếu điều quan trọng là phải chấm dứt mysql do lỗi nếu kết nối bị mất, bạn có thể khởi động ứng dụng khách mysql bằng tùy chọn
sudo /etc/init.d/mysql restart
86