Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tắt Chế độ nghiêm ngặt của MySQL

Chế độ nghiêm ngặt của MySQL và MariaDB kiểm soát cách xử lý các giá trị không hợp lệ hoặc bị thiếu trong các truy vấn thay đổi dữ liệu; điều này bao gồm các câu lệnh INSERT, UPDATE và CREATE TABLE. Khi bật chế độ nghiêm ngặt MySQL, đây là trạng thái mặc định, dữ liệu không hợp lệ hoặc bị thiếu có thể gây ra cảnh báo hoặc lỗi khi cố gắng xử lý truy vấn.

Khi chế độ nghiêm ngặt bị tắt, cùng một truy vấn sẽ có các giá trị không hợp lệ hoặc bị thiếu, được điều chỉnh và sẽ tạo ra một cảnh báo đơn giản. Điều này có vẻ giống như kết quả ưa thích, tuy nhiên với chế độ nghiêm ngặt bị vô hiệu hóa một số hành động có thể gây ra kết quả không mong muốn; ví dụ:khi giá trị được chèn vượt quá giới hạn ký tự tối đa, nó sẽ bị cắt bớt để vừa với giới hạn.

Có nhiều lý do khác nhau khiến chế độ nghiêm ngặt của MySQL có thể cần bị tắt, tuy nhiên, lý do phổ biến nhất là khi máy chủ đang chạy WHMCS - đây là yêu cầu của công cụ đó.

Kiểm tra trước chuyến bay

  • Các hướng dẫn này dành riêng cho việc tắt chế độ nghiêm ngặt của MySQL trên máy chủ Liquid Web được quản lý bằng cPanel.
  • Máy chủ phải chạy MySQL 5.6 / 5.7 hoặc MariaDB 10.x
  • Cần có quyền truy cập dòng lệnh và cấp gốc qua SSH để làm theo hướng dẫn này.

Bước # 1:Luôn sao lưu!

Bất cứ khi nào sửa đổi tệp trên máy chủ, cách tốt nhất là bạn nên thực hiện trước một số hình thức sao lưu. Điều này đảm bảo bạn có một cách để hoàn nguyên các thay đổi nếu có điều gì đó không ổn; nó cũng có lợi vì nó giúp theo dõi thời điểm và những thay đổi nào đã được thực hiện.

Trong khi đăng nhập vào SSH bằng người dùng root, hãy làm như sau:

cp -a /usr/my.cnf{,.strict.bak}
cp -a /etc/my.cnf{,.strict.bak}

Lệnh trên sử dụng 'mở rộng dấu ngoặc nhọn BASH' để tạo bản sao lưu của tệp trong thư mục gốc của nó.

Bước # 2:Tắt Chế độ nghiêm ngặt của MySQL

Tùy thuộc vào máy chủ và cấu hình hiện tại, bạn có thể cần chỉnh sửa một hoặc cả hai tệp sau trên máy chủ. Nói chung, các dòng cấu hình liên quan chỉ ở một trong số chúng, tuy nhiên, nó có thể ở một trong hai mà không gây ra sự cố; vì vậy nói chung tốt nhất là nên kiểm tra cả hai.

Để chỉnh sửa tệp, bạn sẽ mở tệp bằng trình chỉnh sửa dòng lệnh yêu thích của mình. Trong ví dụ này, chúng tôi sử dụng "vim".

vim /usr/my.cnf
vim /etc/my.cnf

Trong vim, bạn có thể nhấn “a” hoặc “i” để vào chế độ chèn văn bản; nhấn phím thoát (Esc) trên bàn phím sẽ đưa bạn về chế độ lệnh. Để biết thêm thông tin về cách chỉnh sửa tệp bằng vim, hãy xem Hướng dẫn người dùng mới của chúng tôi:Tổng quan về Trình chỉnh sửa văn bản Vim.

Trong mỗi tệp ở trên, bạn sẽ tìm kiếm một dòng có nội dung sau:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Nếu bạn tìm thấy một dòng tương tự như ở trên đang đặt biến `sql_mode` thì bạn sẽ cần thay thế nó bằng dòng sau để tắt chế độ nghiêm ngặt của MySQL.

sql_mode=""

Khi điều chỉnh này đã được thực hiện hoặc bạn đã xác nhận rằng tệp không cần phải được điều chỉnh, khi đó, bạn sẽ lưu và đóng tệp.

Bước # 3:Khởi động lại dịch vụ MySQL

Cuối cùng, để thực hiện những thay đổi này có hiệu quả, bạn sẽ cần khởi động lại dịch vụ MySQL vì nó sẽ chỉ đọc các tệp cấu hình khi tải lên ban đầu. Để buộc MySQL sử dụng các tệp cấu hình mới, bạn sẽ làm như sau:

Đối với máy chủ CentOS 7:
systemctl restart mysql

Đối với CentOS 6 trở về trước:
/etc/init.d/mysql restart

Sau khi phát hành lệnh này trên máy chủ, dịch vụ MySQL sẽ được khởi động lại và sẽ tải các thay đổi được thực hiện. Nếu tất cả các hướng dẫn đã được làm theo và hoàn thành, thì chế độ nghiêm ngặt của MySQL bây giờ sẽ bị vô hiệu hóa.

Để xác minh rằng quá trình đã hoàn tất đúng cách, bạn có thể chạy như sau:

mysql -e "SELECT @@sql_mode;"

Đầu ra có thể giống như sau:

+--------------------------------------------+
| @@sql_mode
+--------------------------------------------+
| NO_AUTO_CREATE_USER
+--------------------------------------------+

Nếu bạn có bất kỳ câu hỏi nào hoặc không thoải mái khi tự mình thực hiện những thay đổi này, vui lòng liên hệ với Heroic Support®.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể kết nối với máy chủ MySQL cục bộ thông qua socket '/var/lib/mysql/mysql.sock' (2)

  2. PyMySQL không thể kết nối với MySQL trên máy chủ cục bộ

  3. Giới hạn điều kiện MySQL IN

  4. Mã PHP để chuyển đổi một truy vấn MySQL thành CSV

  5. Sử dụng chế độ xem MySQL