MySQL 9.0正式发布

MySQL 9.0引入了许多新特性和改进,重点提升了性能、安全性和开发者体验。以下是一些主要新特性:

1. JavaScript存储程序

MySQL 9.0通过多语言引擎组件(MLE)支持JavaScript存储过程和函数。这允许开发人员使用JavaScript编写存储程序,符合ECMAScript 2023规范,并默认启用严格模式。 以下是一个示例:

CREATE FUNCTION gcd(a INT, b INT) 
RETURNS INT 
NO SQL 
LANGUAGE JAVASCRIPT AS
$mle$
  let x = Math.abs(a);
  let y = Math.abs(b);
  while (y) {
    let t = y;
    y = x % y;
    x = t;
  }
  return x;
$mle$;

这段代码定义了一个计算两个整数最大公约数的JavaScript函数。

2. VECTOR数据类型

引入了新的VECTOR列类型,用于存储4字节浮点值列表。此类型适用于处理向量化数据,常用于机器学习和科学计算。然而,向量不能用作键,且不能与其他类型进行比较。

VECTOR数据类型用于存储4字节浮点值的列表,以下是一个示例:

CREATE TABLE vectors (
  id INT AUTO_INCREMENT PRIMARY KEY,
  vector_data VECTOR(5000)
);

INSERT INTO vectors (vector_data) VALUES (STRING_TO_VECTOR('[2, 3, 5, 7]'));

SELECT VECTOR_TO_STRING(vector_data) FROM vectors;

这段代码创建了一个包含VECTOR列的表,并插入了一些向量数据,然后将其转换回字符串格式进行查询。

3. 性能模式新表

增加了两个新表variables_metadataglobal_variable_attributes,用于跟踪系统变量和全局变量的属性值对。 以下是查询这些表的示例:

SELECT * FROM performance_schema.variables_metadata LIMIT 2;

SELECT * FROM performance_schema.global_variable_attributes LIMIT 2;

这些查询显示了系统变量和全局变量的属性值对。

4. JSON输出的EXPLAIN ANALYZE

支持将EXPLAIN ANALYZE的JSON格式输出保存到用户变量中,便于后续使用。 以下是一个示例:

SET @json_output := '';
EXPLAIN ANALYZE FORMAT=JSON INTO @json_output SELECT * FROM my_table WHERE id > 10;

SELECT @json_output;

这段代码将EXPLAIN ANALYZE的结果保存到变量@json_output中,并随后查询该变量。

5. 移除mysql_native_password认证插件

MySQL 9.0移除了mysql_native_password认证插件,改为动态加载插件,以提高安全性和兼容性。 以下是一个如何加载该插件的示例:

INSTALL PLUGIN mysql_native_password SONAME 'auth_native_password.so';

-- 重新启用使用mysql_native_password认证
CREATE USER 'user'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY 'password';

这段代码展示了如何动态加载和使用mysql_native_password认证插件。

这些新特性展示了MySQL 9.0在功能上的重大改进,特别是对开发者和数据处理的支持有了显著提升。

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用\[1\]:根据引用\[1\]中的描述,报错"mysql_native_password"可能是因为在将数据从云端MySQL 5.7导入到本地MySQL 5.5库时,密码认证插件不匹配所导致的。可以通过更新本地MySQL用户的密码认证插件为"mysql_native_password"来解决这个问题。具体操作是执行以下SQL语句:update mysql.user set plugin='mysql_native_password'; FLUSH PRIVILEGES; 这样就可以重新导入数据了。\[1\] 引用\[2\]:根据引用\[2\]中的描述,MySQL 8.0版本之后默认的密码加密认证插件是"caching_sha2_password",而之前的版本默认的插件是"mysql_native_password"。新的插件具有更强的加密性能和更安全的密码散列。如果要更新或安装MySQL 8.0以上版本后修改密码认证方式,可以使用以下步骤:\[2\] 1. 登录MySQL数据库。 2. 执行以下SQL语句来修改密码认证方式:alter user 'root'@'localhost' identified with mysql_native_password by '新密码'; 这样就可以将密码认证方式修改为"mysql_native_password"。 综上所述,"mysql_native_password"和"mysql_native_password"是MySQL中的两种密码认证插件,前者是旧版本的默认插件,后者是新版本的默认插件。如果在不同版本的MySQL之间进行数据导入或修改密码时遇到问题,可能需要注意密码认证插件的匹配和更新。 #### 引用[.reference_title] - *1* [mysql_native_password](https://blog.csdn.net/qq_41059997/article/details/123616634)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [caching_sha2_password取代mysql_native_password成为MySQL8.0以上版本的默认密码认证方式](https://blog.csdn.net/weixin_56009656/article/details/119654308)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [将MySQL80的加密规则‘caching_sha2_password’修改为‘mysql_native_password’](https://blog.csdn.net/m0_47015897/article/details/123085350)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值