概述
仅仅为了加强记忆,废话不说,直接上正文。
快速开始
创建数据库。
进入MySql客户端,输入root用户的密码
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 8.0.33 MySQL Community Server - GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
当然我们创建数据库可以很暴力
mysql> create database test;
Query OK, 1 row affected (0.01 sec)
查看我们已经创建的数据库
mysql> show databases;
+------------------------------+
| Database |
+------------------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| soingol_crm_plantform |
| soingol_linkecustomer_manage |
| sys |
| test |
| world |
+------------------------------+
9 rows in set (0.00 sec)
我们已经可以看到我们创建的test数据库了,但是这样显然不是我们想要的结果。
我们需要在创建数据库时为数据库指定字符集以及排序规则。
CREATE DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
设置字符集时我们一般选择utf-8,简单介绍一下utf8与utfmb4的区别。
utf8mb4兼容utf8,且比utf8能表示更多的字符,unicode编码区从1 ~ 126就属于传统utf8区,当然utf8mb4也兼容这个区,126行以下就是utf8mb4扩充区,什么时候你需要存储那些字符,你才用utf8mb4,否则只是浪费空间。
排序一般分为两种:utf_bin和utf_general_ci
bin 是二进制, a 和 A 会别区别对待.
select * from table where a = ‘a’;
那么在utf8_bin中你就找不到 a = ‘A’ 的那一行, 而 utf8_general_ci 则可以.
utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。
utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果
utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容
utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
utf8_general_ci校对速度快,但准确度稍差。(准确度够用,一般建库选择这个)
utf8_unicode_ci准确度高,但校对速度稍慢。
删除数据库
drop database test;
创建用户
CREATE USER ‘username‘@’host’ IDENTIFIED BY ‘password’;
属性名 | 含义 |
username | 登录用户名 |
host | 指定可访问的Ip,如果指定所有ip都可以访问,将其指定为通配符‘%’即可 |
password | 登录密码,如果密码为空则无需密码 |
我们查看一下用户是否已经创建成功
mysql> select user,host from user;
ERROR 1046 (3D000): No database selected
出现这个异常怎么办,我们只需要指定一下数据库即可。
mysql> use mysql;
Database changed
ok,现在我们可以继续查询了
mysql> select user,host from user;
+-----------------------+-----------+
| user | host |
+-----------------------+-----------+
| root | % |
| linkecustomer_manage | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| soingol_crm_plantform | localhost |
+-----------------------+-----------+
6 rows in set (0.00 sec)
- 为用户授权
grant privileges on database.tablename to “username”@’host’;
属性名 | 含义 |
privileges | 用户的操作权限,如select,insert,update等,如果授予所有权限则使用all |
database | 如果不指定数据库,直接 *.* 即可,如果指定数据库,不指定表名,则database.*即可 |
username | 登录的用户名 |
host | 给予授权的主机ip,如我想让用户A的Ip使用test用户授予的权限,但是不想用户B的Ip使用test用户的权限 |
grant select,update on soingol_crm_plantform.tbl_m_form to 'test'@'localhost';
例如我们赋予查询以及修改权限为数据库soingol_crm_plantform中的表tbl_m_form。但是不允许插入以及删除,则我们在使用该用户删除数据时会报错,
当然我们可以继续为用户增加权限
grant delete on soingol_crm_plantform.tbl_m_form to 'test'@'localhost';
ok,我们查看一下已经赋予的权限
mysql> show grants for 'soingol_crm_plantform'@'localhost';
+------------------------------------------------------------------------------------------+
| Grants for soingol_crm_plantform@localhost |
+------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `soingol_crm_plantform`@`localhost` |
| GRANT ALL PRIVILEGES ON `soingol_crm_plantform`.* TO `soingol_crm_plantform`@`localhost` |
+------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
在此,我们可以看到我们为用户soingol_crm_plantform设置了所有权限。
权限常用关键字
撤销所有权限
evoke privileges ON database.tablename FROM ‘username‘@’host’;
撤销(revoke)的和授予(grant)的基本一样,除了 revoke(对应 grant)和 from(对应 to)
- 删除用户
drop user username@host
- 修改用户密码
set PASSWORD FOR ‘username‘@’%’ = PASSWORD (‘要修改的密码’)
- 密码过期以及锁定用户
在 MySQL5.6.6 版本起,增加了 password_expired 功能,它允许设置 MySQL 数据库用户的密码过期时间。这个特性已经添加到 mysql.user 数据表,它的默认值是”N”,表示已禁用密码过期功能
mysql> alter user 'soingol_crm_plantform'@'localhost' password expire;
关于 mysql5.7 锁定用户
在创建的时候锁定用户:
mysql> create user 'soingol_crm_plantform'@'localhost' account unlock;
已存在的时候锁定用户:
mysql> alter user 'soingol_crm_plantform'@'localhost' account lock;
解锁账号
mysql> alter user 'soingol_crm_plantform'@'localhost' account unlock;