文章内容
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_ci、utf8mb4_unicode_ci、utf8mb4_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
其它相关推荐:
黄兵个人博客原创。
转载请注明出处: 黄兵个人博客 - MySQL新建数据库以及授权过程
评论列表