MySQL必知必会—概念篇mysql
推荐几个 MySQL 安装和链接的经验文章git
链接数据库须要如下信息:github
例以下面的指令:sql
mysql -u root -h localhost -P 3306 -p
复制代码
MySQL 服务器的安全基础是:用户应该对他们须要的数据具备适当的访问权,既不能多也不能少。数据库
须要给用户提供他们所需的访问权,且仅提供他们所需的访问权。这就是所谓的访问控制。访问控制的目的不单单是防止用户的恶意企图,访问控制也有助于避免很常见的无心识错误的结果,如错打 MySQL 语句,在不合适的数据库中操做或其余一些用户错误。安全
MySQL 用户帐号和信息存储在名为 mysql 的 MySQL数据库中。通常只有在须要得到全部用户帐号列表时才会直接访问。bash
# 输入
USE mysql;
SELECT user FROM user;
# 输出
+------------------+
| user |
+------------------+
| test |
| root |
+------------------+
复制代码
一、使用 CREATE USER 语句(推荐)服务器
# 输入
CREATE USER chenfangxu IDENTIFIED BY '123456';
SELECT user FROM user;
#输出
+------------------+
| user |
+------------------+
| chenfangxu |
| test |
| root |
+------------------+
复制代码
二、GRANT 语句也能够建立用户帐号。(MySQL 8.0以上的新版本已经将建立帐户和赋予权限分开了,因此不能再用这种方法建立用户了)post
# mysql8.0如下
GRANT SELECT ON *.* TO chenfangxu@'%' IDENTIFIED BY '123456';
复制代码
三、使用 INSERT 直接插入行到 user 表来增长用户(不建议)ui
在建立用户帐号后,必须接着分配访问权限。新建立的用户帐号没有访问权限。他们能登陆 MySQL ,但不能看到数据,不能执行任何数据库操做。
查看赋予用户帐号的权限
SHOW GRANTS FOR
# 输入
SHOW GRANTS FOR chenfangxu;
# 输出
+----------------------------------------+
| Grants for chenfangxu@% |
+----------------------------------------+
| GRANT USAGE ON *.* TO `chenfangxu`@`%` |
+----------------------------------------+
复制代码
权限 USAGE ON *.*
,USAGE表示根本没有权限,这句话就是说在任意数据库和任意表上对任何东西没有权限。
chenfangxu@%
由于用户定义为 user@host
, MySQL的权限用用户名和主机名结合定义,若是不指定主机名,则使用默认的主机名%
(即授予用户访问权限而无论主机名)。
添加(更新)用户权限
GRANT privileges ON databasename.tablename TO 'username'@'host';
# 输入
GRANT SELECT ON performance_schema.* TO chenfangxu@'%';
SHOW GRANTS FOR chenfangxu;
# 输出
+------------------------------------------------------------+
| Grants for chenfangxu@% |
+------------------------------------------------------------+
| GRANT USAGE ON *.* TO `chenfangxu`@`%` |
| GRANT SELECT ON `performance_schema`.* TO `chenfangxu`@`%` |
+------------------------------------------------------------+
复制代码
撤销用户的权限
REVOKE privileges ON databasename.tablename FROM 'username'@'host';
# 输入
REVOKE SELECT ON performance_schema.* FROM chenfangxu@'%';
SHOW GRANTS FOR chenfangxu;
#输出
+----------------------------------------+
| Grants for chenfangxu@% |
+----------------------------------------+
| GRANT USAGE ON *.* TO `chenfangxu`@`%` |
+----------------------------------------+
复制代码
重命名:
RENAME USER 'username' TO 'newusername';
# 输入
RENAME USER test TO test1;
SELECT user FROM user;
# 输出
+------------------+
| user |
+------------------+
| test1 |
| root |
+------------------+
复制代码
更改用户密码:
SET PASSWORD FOR 'username'@'host' = 'newpassword';
SET PASSWORD FOR chenfangxu@'%' = '654321';
# 更改root密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';
复制代码
删除用户:
DROP USER 'username'@'host';
# 输入
DROP USER chenfangxu@'%';
SELECT user FROM user;
#输出
+------------------+
| user |
+------------------+
| test |
| root |
+------------------+
复制代码
MySQL 5 之前, DROP USER 只能用来删除用户帐号,不能删除相关的权限。所以,若是使用旧版的 MySQL 须要先用 REVOKE 删除与帐号相关的权限,而后再用 DROP USER 删除帐号。
# 建立数据库,如建立 learnsql 数据库
CREATE DATABASE learnsql;
# 选择数据库,如选择 learnsql 数据库
USE learnsql;
# 显示数据库列表
SHOW DATABASES;
# 显示数据库内的表的列表
SHOW TABLES;
# 显示表中每一列的详细信息
SHOW COLUMNS FROM customers;
复制代码
MySQL 中 DESCRIBE 能够做为 SHOW COLUMNS FROM 的快捷方式。
# 如下两种命令结果相同
SHOW COLUMNS FROM customers;
DESCRIBE customers;
复制代码
一个持续更新的github笔记,连接地址:Front-End-Basics,能够watch,也能够star。
此篇文章的地址:MySql必知必会