文章内容

2020/8/19 17:11:42,作 者: 黄兵

MySQL新建数据库以及授权过程

此文总结了新建MySQL数据库,新建用户,用户授权等过程:

一、新建数据库

新建数据库,并设置数据库采用的编码方式:

CREATE DATABASE db_name DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;

如果我们使用的是 MySQL 8.0 可以使用如下写法:

MySQL 8.0 里,字符集推荐用 utf8mb4 而不是 utf8

原因:

  • utf8 在 MySQL 里其实是 最多 3 字节的 UTF-8,并不是完整的 UTF-8,无法存储部分 emoji 等字符。

  • utf8mb4 才是完整的 UTF-8 实现,MySQL 官方建议统一使用 utf8mb4

  • 另外,排序规则(collation)在 MySQL 8.0 已经有更现代的版本,比如 utf8mb4_general_ciutf8mb4_unicode_ciutf8mb4_0900_ai_ci 等。

所以,推荐写法是:

CREATE DATABASE db_name
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_0900_ai_ci;

说明:

  • utf8mb4 → 完整 UTF-8

  • 0900 → 使用 Unicode 9.0 排序规则(MySQL 8.0 新增,更准确)

  • ai → accent insensitive(忽略重音)

  • ci → case insensitive(忽略大小写)

如果你的项目里并没有对 emoji 或部分 Unicode 有需求,那你原来的写法也能正常使用,但从长期和兼容性看,还是建议升级到 utf8mb4

二、新建用户

新建用户,设置用户可以远程连接,并设置密码:

CREATE USER 'user_name'@'%' IDENTIFIED BY 'password';

之后给上面新建的数据库授权:

GRANT SELECT, INSERT, CREATE, DROP, ALTER, DELETE, INDEX, UPDATE, REFERENCES  ON db_name.* TO 'user_name'@'%';

这里给了一些常用的权限,不推荐全部授权,主要还是存在一些安全问题,需要注意。

权限解释:

  • SELECT → 查询

  • INSERT → 插入

  • UPDATE → 更新

  • DELETE → 删除

  • CREATE → 创建表/视图等

  • DROP → 删除表/视图等

  • ALTER → 修改表结构

  • INDEX → 创建/删除索引

  • REFERENCES → 外键相关权限

如果这个用户是应用程序用的,通常只需要:

GRANT SELECT, INSERT, UPDATE, DELETE
ON db_name.* TO 'user'@'%';

(即 CRUD 权限,不必给 DDL 权限 CREATE/DROP/ALTER


删除数据库:

DROP DATABASE db_name;

如果是在 Ubuntu 20.04 上安装数据库,可疑参考这篇文章:Ubuntu 20.04 如何安装 MySQL


其它相关推荐:

1、mysql远程连接命令

2、mysql 数据库迁移的一次记录

3、Mysql 同一个数据库服务器转移数据

4、MySQL 8.0 远程迁移

5、MySQL 如何更改用户密码


黄兵个人博客原创。

转载请注明出处: 黄兵个人博客 - MySQL新建数据库以及授权过程

分享到:

发表评论

评论列表