MariaDB 10.4.11 (GA)的變化和改進

一、帳戶鎖定

支持管理員鎖定/解鎖用戶賬戶,語句:mysql

 

1 鎖定算法

ALTER USER 'hechunyang'@'%' ACCOUNT LOCK;sql

 

當鎖定後,用戶再次登陸時,提示以下信息:ide

# mysql -h127.0.0.1 -uhechunyang -p -P3312this

Enter password: spa

ERROR 4151 (HY000): Access denied, this account is lockedorm

 

2 解鎖ssl

ALTER USER 'hechunyang'@'%' ACCOUNT UNLOCK;ci

 

注:賬戶被鎖定現有鏈接不受影響,新的客戶端不容許鏈接。string

 

3 查看帳戶鎖定信息

> show create user hechunyang@'%'\G;

*************************** 1. row ***************************

CREATE USER for hechunyang@%: CREATE USER 'hechunyang'@'%'

IDENTIFIED BY PASSWORD

'*1DA3AF2348DE66F7554E816DEDC1F1340814842E' ACCOUNT LOCK

 

> select * from mysql.global_priv where user='hechunyang'\G;

*************************** 1. row ***************************

Host: %

User: hechunyang

Priv:

{"access":1073740799,"plugin":"mysql_native_password","authentication_string":"*

1DA3AF2348DE66F7554E816DEDC1F1340814842E","password_last_changed":15

76823835,"account_locked":true}


二、用戶密碼到期

1 設置用戶到期時間

>CREATE USER 'hechunyang'@'%' PASSWORD EXPIRE INTERVAL 1 DAY;

 

>ALTER USER 'hechunyang'@'%' PASSWORD EXPIRE INTERVAL 1 DAY;

 

注:單位默認只有DAY(天),最小爲1天。

 

當用戶權限到期後,登陸時提示修改密碼,以下:

hechunyang@127.0.0.1[(none)]>show processlist;

ERROR 1820 (HY000): You must SET PASSWORD before executing this statement

ERROR 1820 (HY000): You must SET PASSWORD before executing this statement

ERROR 1820 (HY000): You must SET PASSWORD before executing this statement

 

2 解除限制

>ALTER USER 'hechunyang'@'%' PASSWORD EXPIRE NEVER;

 

三、支持更改字符集utf8->utf8mb4採用ALGORITHM=INSTANT算法

MariaDB支持表的某一字段,或者整張表,字符集utf8轉換爲utf8mb4採用ALGORITHM=INSTANT算法(只修改字典信息)

 

例表結構:

CREATE TABLE t1 (

  id int(11) DEFAULT NULL,

  cid int(11) DEFAULT NULL,

  name varchar(60) DEFAULT NULL,

  KEY IX_cid (cid)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

DDL變動語句(秒級更改)

alter table t1 modify name varchar(60) charset utf8mb4, ALGORITHM=INSTANT;

 

須要注意的地方:

1)反過來utf8mb4->utf8是不支持INSTANT算法的。

2)若是你的字段是latin1拉丁文,轉utf8/utf8mb4不支持INSTANT算法的。

 

注:MySQL 8.0.18版本中,修改字符集utf8->utf8mb4是沒法使用到INSTANT算法的,須要重建表(ALGORITHM=COPY算法),且會鎖表,update/delete/insert/replace into語句會被MDL鎖住(Waiting for table metadata lock


四、字段長度不大於varchar(256),支持採用ALGORITHM=INSTANT算法

例表結構:

CREATE TABLE t1 (

  id int(11) DEFAULT NULL,

  cid int(11) DEFAULT NULL,

  name varchar(60) DEFAULT NULL,

  KEY IX_cid (cid)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

DDL變動語句(秒級更改)

alter table t1 modify name varchar(80) DEFAULT NULL, ALGORITHM=INSTANT;

 

須要注意的地方:

1varchar(60)減小到varchar(40)是不支持INSTANT算法的。

2)大於並等於varchar(256),這裏的256是指字節(UTF8佔用3字節),是不支持INSTANT算法的。

 

注:只對varchar類型採用INSTANT算法,charint是無效的,仍舊是須要拷貝數據且鎖表。

相關文章
相關標籤/搜索