MySQL 安装
推荐几个 MySQL 安装和连接的经验文章
MySQL 应用
mysql 命令行
- 命令输入在 mysql> 之后;
- 命令用 ; 或 g 结束,换句话说,仅按 Enter 不执行命令;
- 输入 help 或 h 获得帮助,也可以输入更多的文本获得特定命令的帮助(如,输入 help select 获得试用 SELECT 语句的帮助);
- 输入 quit 或 exit 退出命令行。
连接数据库
连接数据库需要以下信息:
- 主机名(计算机名)——如果连接到本地 MySQL 服务器,为 localhost ;
- 端口(如果使用默认端口 3306 之外的端口);
- 一个合法的用户名;
- 用户口令(如果需要)
例如下面的指令:
mysql -u root -h localhost -P 3306 -p
数据库的登录和成员管理
访问控制
MySQL 服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少。
需要给用户提供他们所需的访问权,且仅提供他们所需的访问权。这就是所谓的访问控制。访问控制的目的不仅仅是防止用户的恶意企图,访问控制也有助于避免很常见的无意识错误的结果,如错打 MySQL 语句,在不合适的数据库中操作或其他一些用户错误。
管理用户
查询已有用户
MySQL 用户账号和信息存储在名为 mysql 的 MySQL数据库中。一般只有在需要获得所有用户账号列表时才会直接访问。
# 输入
USE mysql;
SELECT user FROM user;
# 输出
+------------------+
| user |
+------------------+
| test |
| root |
+------------------+
创建用户账号
1、使用 CREATE USER 语句(推荐)
# 输入
CREATE USER chenfangxu IDENTIFIED BY '123456';
SELECT user FROM user;
#输出
+------------------+
| user |
+------------------+
| chenfangxu |
| test |
| root |
+------------------+
2、GRANT 语句也可以创建用户账号。(MySQL 8.0以上的新版本已经将创建账户和赋予权限分开了,所以不能再用这种方法创建用户了)
# mysql8.0以下
GRANT SELECT ON *.* TO chenfangxu@'%' IDENTIFIED BY '123456';
3、使用 INSERT 直接插入行到 user 表来增加用户(不建议)
设置访问权限
在创建用户账号后,必须接着分配访问权限。新创建的用户账号没有访问权限。他们能登录 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 |
+------------------+
更改用户密码(mysql 8.0.11后)
更改用户密码:
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;
DESCRIBE 语句
MySQL 中 DESCRIBE 可以作为 SHOW COLUMNS FROM 的快捷方式。
# 以下两种命令结果相同
SHOW COLUMNS FROM customers;
DESCRIBE customers;
一个持续更新的github笔记,链接地址:Front-End-Basics,可以watch,也可以star。
此篇文章的地址:MySql必知必会