Hướng dẫn mysql 5.6 vs 5.7 breaking changes - mysql 5.6 so với 5.7 thay đổi phá vỡ

  • Thay đổi không tương thích: Kể từ MySQL 5.7.5, hỗ trợ mật khẩu sử dụng định dạng băm mật khẩu trước 4 tuổi cũ hơn được xóa, liên quan đến các thay đổi sau. Các ứng dụng sử dụng bất kỳ tính năng nào không còn được hỗ trợ phải được sửa đổi.: As of MySQL 5.7.5, support for passwords that use the older pre-4.1 password hashing format is removed, which involves the following changes. Applications that use any feature no longer supported must be modified.

    • Plugin xác thực mysql_old_password đã sử dụng các giá trị băm mật khẩu trước 4,1 bị xóa. Các tài khoản sử dụng plugin này được vô hiệu hóa khi khởi động và máy chủ ghi một thông báo plugin không xác định của Google vào nhật ký lỗi. Để biết hướng dẫn về việc nâng cấp các tài khoản sử dụng plugin này, xem Phần & NBSP; 6.4.1.3, di chuyển ra khỏi mật khẩu trước 4,1 và plugin mysql_old_password.unknown plugin message to the error log. For instructions on upgrading accounts that use this plugin, see Section 6.4.1.3, “Migrating Away from Pre-4.1 Password Hashing and the mysql_old_password Plugin”.

    • Đối với biến hệ thống old_passwords, giá trị 1 [sản xuất các giá trị băm trước 4,1] không còn được phép.

    • Tùy chọn --secure-auth cho các chương trình máy chủ và máy khách là mặc định, nhưng bây giờ là không có op. Nó không được chấp nhận; hy vọng nó sẽ được loại bỏ trong bản phát hành MySQL trong tương lai.

    • Tùy chọn --skip-secure-auth cho máy chủ và các chương trình máy khách không còn được hỗ trợ và sử dụng nó tạo ra lỗi.

    • Biến hệ thống secure_auth chỉ cho phép một giá trị là 1; Giá trị 0 không còn được phép.

    • Hàm OLD_PASSWORD[] được loại bỏ.

  • Thay đổi không tương thích: Trong MySQL 5.6.6, loại dữ liệu

    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    0 2 chữ số đã bị phản đối. Trong MySQL 5.7.5, hỗ trợ cho
    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    0 bị xóa. Sau khi bạn nâng cấp lên MySQL 5.7.5 trở lên, bất kỳ cột
    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    0 2 chữ số nào còn lại phải được chuyển đổi thành các cột
    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    3 4 chữ số để có thể sử dụng được. Đối với các chiến lược chuyển đổi, xem Phần & NBSP; 11.2.5, Năm 2 chữ số [2] giới hạn và di chuyển sang năm chữ số 4 chữ số. Chạy mysql_upgrade sau khi nâng cấp là một trong những chiến lược chuyển đổi có thể.
    : In MySQL 5.6.6, the 2-digit
    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    0 data type was deprecated. In MySQL 5.7.5, support for
    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    0 is removed. Once you upgrade to MySQL 5.7.5 or higher, any remaining 2-digit
    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    0 columns must be converted to 4-digit
    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    3 columns to become usable again. For conversion strategies, see Section 11.2.5, “2-Digit YEAR[2] Limitations and Migrating to 4-Digit YEAR”. Running mysql_upgrade after upgrading is one of the possible conversion strategies.

  • MYSQL 5.7.7,

    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    4 báo cáo một bảng là cần xây dựng lại nếu nó chứa các cột tạm thời cũ ở định dạng trước 5.6.4 . Điều này giúp mysql_upgrade phát hiện và nâng cấp các bảng chứa các cột thời gian cũ. Nếu
    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    8 được bật,
    0 bỏ qua các cột tạm thời cũ có trong bảng; Do đó, mysql_upgrade không nâng cấp chúng.mysql_upgrade to detect and upgrade tables containing old temporal columns. If
    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    8 is enabled,
    0 ignores the old temporal columns present in the table; consequently, mysql_upgrade does not upgrade them.

    Kể từ MySQL 5.7.7,

    1 nâng cấp bảng nếu nó chứa các cột tạm thời cũ ở định dạng Pre-5.6.4 và biến hệ thống
    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    8 bị vô hiệu hóa. Nếu
    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    8 được bật,
    4 bỏ qua các cột tạm thời cũ có trong bảng và không nâng cấp chúng.

    Để kiểm tra các bảng có chứa các cột thời gian như vậy và cần xây dựng lại, vô hiệu hóa

    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    8 trước khi thực hiện
    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    4.

    Để nâng cấp các bảng có chứa các cột thời gian như vậy, hãy vô hiệu hóa

    SET sql_mode = '';
    CREATE TABLE t [d DATE DEFAULT 0];
    SET sql_mode = 'NO_ZERO_DATE,STRICT_ALL_TABLES';
    INSERT INTO t [d] VALUES[DEFAULT];
    8 trước khi thực hiện
    4 hoặc mysql_upgrade.mysql_upgrade.

  • Thay đổi không tương thích: Kể từ MySQL 5.7.2, máy chủ yêu cầu các hàng tài khoản trong bảng hệ thống

    9 phải có giá trị cột
    
     2013-04-15T15:27:27 UTC
     3998_2013-04-15T15:27:27
     Query
     3
     0
     0
     root[root] @ localhost [127.0.0.1]
     
     localhost
     127.0.0.1
     select
     SELECT 1
    
    0 không trống và vô hiệu hóa tài khoản có giá trị trống. Điều này yêu cầu bạn nâng cấp bảng
    9 của mình để điền vào tất cả các giá trị
    
     2013-04-15T15:27:27 UTC
     3998_2013-04-15T15:27:27
     Query
     3
     0
     0
     root[root] @ localhost [127.0.0.1]
     
     localhost
     127.0.0.1
     select
     SELECT 1
    
    0. Kể từ MySQL 5.7.6, hãy sử dụng quy trình này:
    : As of MySQL 5.7.2, the server requires account rows in the
    9 system table to have a nonempty
    
     2013-04-15T15:27:27 UTC
     3998_2013-04-15T15:27:27
     Query
     3
     0
     0
     root[root] @ localhost [127.0.0.1]
     
     localhost
     127.0.0.1
     select
     SELECT 1
    
    0 column value and disables accounts with an empty value. This requires that you upgrade your
    9 table to fill in all
    
     2013-04-15T15:27:27 UTC
     3998_2013-04-15T15:27:27
     Query
     3
     0
     0
     root[root] @ localhost [127.0.0.1]
     
     localhost
     127.0.0.1
     select
     SELECT 1
    
    0 values. As of MySQL 5.7.6, use this procedure:

    Nếu bạn có kế hoạch nâng cấp bằng thư mục dữ liệu từ cài đặt MySQL hiện tại của bạn:

    1. Dừng máy chủ cũ [MySQL 5.6]

    2. Nâng cấp các nhị phân MySQL tại chỗ bằng cách thay thế các nhị phân cũ bằng những nhị phân mới

    3. Khởi động máy chủ MySQL 5.7 bình thường [không có tùy chọn đặc biệt]

    4. Chạy MySQL_Upgrade để nâng cấp các bảng hệ thốngmysql_upgrade to upgrade the system tables

    5. Khởi động lại máy chủ MySQL 5.7

    Nếu bạn có kế hoạch nâng cấp bằng cách tải lại tệp kết xuất được tạo từ cài đặt MySQL hiện tại của bạn:

    1. Để tạo tệp kết xuất, hãy chạy mysqldump với tùy chọn

      
       2013-04-15T15:27:27 UTC
       3998_2013-04-15T15:27:27
       Query
       3
       0
       0
       root[root] @ localhost [127.0.0.1]
       
       localhost
       127.0.0.1
       select
       SELECT 1
      
      3 và không có tùy chọn
      
       2013-04-15T15:27:27 UTC
       3998_2013-04-15T15:27:27
       Query
       3
       0
       0
       root[root] @ localhost [127.0.0.1]
       
       localhost
       127.0.0.1
       select
       SELECT 1
      
      4mysqldump with the
      
       2013-04-15T15:27:27 UTC
       3998_2013-04-15T15:27:27
       Query
       3
       0
       0
       root[root] @ localhost [127.0.0.1]
       
       localhost
       127.0.0.1
       select
       SELECT 1
      
      3 option and without the
      
       2013-04-15T15:27:27 UTC
       3998_2013-04-15T15:27:27
       Query
       3
       0
       0
       root[root] @ localhost [127.0.0.1]
       
       localhost
       127.0.0.1
       select
       SELECT 1
      
      4 option

    2. Dừng máy chủ cũ [MySQL 5.6]

    3. Nâng cấp các nhị phân MySQL tại chỗ bằng cách thay thế các nhị phân cũ bằng những nhị phân mới

    4. Khởi động máy chủ MySQL 5.7 bình thường [không có tùy chọn đặc biệt]

    5. Chạy MySQL_Upgrade để nâng cấp các bảng hệ thốngmysql <

      
       2013-04-15T15:27:27 UTC
       3998_2013-04-15T15:27:27
       Query
       3
       0
       0
       root[root] @ localhost [127.0.0.1]
       
       localhost
       127.0.0.1
       select
       SELECT 1
      
      5]

    6. Chạy MySQL_Upgrade để nâng cấp các bảng hệ thốngmysql_upgrade to upgrade the system tables

    7. Khởi động lại máy chủ MySQL 5.7

    Nếu bạn có kế hoạch nâng cấp bằng cách tải lại tệp kết xuất được tạo từ cài đặt MySQL hiện tại của bạn:

    Nếu bạn có kế hoạch nâng cấp bằng thư mục dữ liệu từ cài đặt MySQL hiện tại của bạn:

    1. Dừng máy chủ cũ [MySQL 5.6]

    2. Nâng cấp các nhị phân MySQL tại chỗ bằng cách thay thế các nhị phân cũ bằng những nhị phân mới

    3. Khởi động máy chủ MySQL 5.7 bình thường [không có tùy chọn đặc biệt]

    4. Chạy MySQL_Upgrade để nâng cấp các bảng hệ thốngmysql_upgrade to upgrade the system tables

    5. Khởi động lại máy chủ MySQL 5.7

    Nếu bạn có kế hoạch nâng cấp bằng cách tải lại tệp kết xuất được tạo từ cài đặt MySQL hiện tại của bạn:

    1. Để tạo tệp kết xuất, hãy chạy mysqldump với tùy chọn

      
       2013-04-15T15:27:27 UTC
       3998_2013-04-15T15:27:27
       Query
       3
       0
       0
       root[root] @ localhost [127.0.0.1]
       
       localhost
       127.0.0.1
       select
       SELECT 1
      
      3 và không có tùy chọn
      
       2013-04-15T15:27:27 UTC
       3998_2013-04-15T15:27:27
       Query
       3
       0
       0
       root[root] @ localhost [127.0.0.1]
       
       localhost
       127.0.0.1
       select
       SELECT 1
      
      4mysqldump without the
      
       2013-04-15T15:27:27 UTC
       3998_2013-04-15T15:27:27
       Query
       3
       0
       0
       root[root] @ localhost [127.0.0.1]
       
       localhost
       127.0.0.1
       select
       SELECT 1
      
      4 option

    2. Dừng máy chủ cũ [MySQL 5.6]

    3. Nâng cấp các nhị phân MySQL tại chỗ bằng cách thay thế các nhị phân cũ bằng những nhị phân mới

    4. Khởi động máy chủ MySQL 5.7 bình thường [không có tùy chọn đặc biệt]

    5. Reload the dump file [mysql <

      
       2013-04-15T15:27:27 UTC
       3998_2013-04-15T15:27:27
       Query
       3
       0
       0
       root[root] @ localhost [127.0.0.1]
       
       localhost
       127.0.0.1
       select
       SELECT 1
      
      5]

    6. Run mysql_upgrade to upgrade the system tables

    7. Restart the server normally [without

      
       2013-04-15T15:27:27 UTC
       3998_2013-04-15T15:27:27
       Query
       3
       0
       0
       root[root] @ localhost [127.0.0.1]
       
       localhost
       127.0.0.1
       select
       SELECT 1
      
      6]

    mysql_upgrade runs by default as the MySQL mysql_old_password2 user. For the preceding procedures, if the mysql_old_password2 password is expired when you run mysql_upgrade, it displays a message informing you that your password is expired and that mysql_upgrade failed as a result. To correct this, reset the mysql_old_password2 password and run mysql_upgrade again:

    $> mysql -u root -p
    Enter password: ****   ALTER USER USER[] IDENTIFIED BY 'root-password'; # MySQL 5.7.6 and up
    mysql> SET PASSWORD = PASSWORD['root-password'];        # Before MySQL 5.7.6
    mysql> quit
    
    $> mysql_upgrade -p
    Enter password: ****  

Bài Viết Liên Quan

Chủ Đề