文件版本说明
版本 | 颁布日期 | 修订章节 | 作者 |
---|---|---|---|
0.1 | 2017.09.24 | 撰写草稿 | 钟鑫 |
0.2 | 2017.10.22 | 添加MySQL数据库管理和用户管理 | 钟鑫 |
0.3 | 2017.11.04 | 添加数据库管理以及表的管理 | 钟鑫 |
0.4 | 2017.11.05 | 添加表管理以及字段管理 | 钟鑫 |
0.5 | 2017.11.07 | 添加MySQL值操作 | 钟鑫 |
0.6 | 2017.11.08 | 添加加密函数 | 钟鑫 |
0.7 | 2017.11.12 | 添加表与表之间的关联 | 钟鑫 |
0.8 | 2017.11.18 | 添加MySQL代码操作API | 钟鑫 |
0.9 | 2017.11.19 | 添加MySQL代码C的API | 钟鑫 |
1.0 | 2017.11.25 | 添加MySQL代码的C++API | 钟鑫 |
1.1 | 2017.11.26 | 完善MySQL代码的C++API | 钟鑫 |
1.2 | 2017.11.27 | 添加MySQl异常类说明 | 钟鑫 |
1.3 | 2017.11.28 | 添加C++ API查询结果 | 钟鑫 |
1.4 | 2017.12.03 | 整理数据查询关联 | 钟鑫 |
MySQL简介
百度百科:https://baike.baidu.com/item/mySQL/471251?fr=aladdin
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
下载安装
linux环境安装
1、 安装MySQL服务端:
sudo apt-get install mysql-server
2、 安装MySQL客户端:
apt-get isntall mysql-client
3、 安装客户端关联库
sudo apt-get install libmysqlclient-dev
window环境安装
在官网下载MySQL版本,如下图所示。
选择安装相应的功能以及MySQL Server,如下图所示。
在设置网络端口时默认选择如下图所示。
设置root密码,设置完之后还可以添加用户,如下图所示。
除了用户登录与登出以外,其他的用户操作例如修改用户名和密码都需要赋予操作数据库mysql中的user表权限才能使用,只能是系统管理员用户才能使用。
用户登录与登出
登录SQL命令:
mysql -uusername -p
接着输入该用户的密码即可。
登出SQL命令:
exit
创建用户:CREATE USER
登录系统用户之后,就可以使用SQL命令操作数据库
创建用户SQL命令:CREATE USER
create user 'username'@'localhost' identified by 'password';
@后面的’localhost’即为本地的端口。
执行结果
mysql> create user 'zxsql'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.08 sec)
mysql>
查看创建用户的结果
mysql> select user from mysql.user where user = 'zxsql';
+-------+
| user |
+-------+
| zxsql |
+-------+
1 row in set (0.00 sec)
mysql>
修改用户名与密码:SET
SQL命令:
set password for 'username'@'localhost'=PASSWORD('123456');
这里调用PASSWORD()接口来使密码进行加密。
示例:修改用户zxsql密码为123456
mysql> set password for 'zxsql'@'localhost'=PASSWORD('123456');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql>
删除用户:DROP
SQL命令:
drop user 'username'@'localhost';
用户权限管理
赋予用户权限:GRANT
用户用到的SQL权限为
ALL : 所有可用的权限
CREATE : 创建库、表和索引
LOCK_TABLES : 锁定表
ALTER : 修改表
DELETE : 删除表
INSERT : 插入表或列
UPDATE : 更新表
SELECT : 检索表或列的数据
CREATE_VIEW : 创建视图
SHOW_DATABASES : 列出数据库
DROP : 删除库、表和视图
SQL命令:
grant <privileges> on <database>.<table> to 'username'@'localhost';
privileges :上述列出来的权限名
database :需要赋予的数据库名
table :需要赋予的数据库里面的表明
赋予多个权限需要用逗号“,”分隔。
示例:赋予用户zxsql在数据库zx_mysql的所有权限;
SQL命令:
grant ALL on zx_mysql.* to 'zxsql'@'localhost';
mysql> grant all on zx_mysql.* to 'zxsql'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql>
显示用户权限SHOW GRANTS
SQL命令:
show grants for 'username'@'localhost';
当用户普通用户查看自己的权限是不需要输入名字,直接输入:
show grants;
mysql> show grants for 'zxsql'@'localhost';
+---------------------------------------------------------------+
| Grants for zxsql@localhost |
+---------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'zxsql'@'localhost' |
| GRANT ALL PRIVILEGES ON `zx_mysql`.* TO 'zxsql'@'localhost' |
+---------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql>
回收用户权限:REVOKE
SQL命令:
revoke <privileges> on <database>.<table> from 'username'@'localhost';
示例:回收用户zxsql在数据库zx_mysql的删除表权限;
SQL命令:DELETE
revoke DELETE on zx_mysql.* from 'zxsql'@'localhost';
mysql> revoke DELETE on zx_mysql.* from 'zxsql'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for 'zxsql'@'localhost';
+-------------------------------------------------------+
| Grants for zxsql@localhost |
+-------------------------------------------------------+
| GRANT USAGE ON *.* TO 'zxsql'@'localhost' |
| GRANT SELECT, INSERT, UPDATE, CREATE, DROP, |
| REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, |
| LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, |
| CREATE ROUTINE, ALTER ROUTINE, EVENT, |
| TRIGGER ON `zx_mysql`.* TO 'zxsql'@'localhost' |
+-------------------------------------------------------+
2 rows in set (0.00 sec)
mysql>
保存设置:FLUSH PRIVILEGES
设置权限可以通过修改数据库的形式进行设置,设置完毕之后需要刷新更改的权限设置。
修改权限数据库
mysql> select Db from db where user = 'zxsql';
+----------+
| Db |
+----------+
| zx_mysql |
+----------+
1 row in set
mysql>
SQL命令:
FLUSH PRIVILEGES;
mysql> flush privileges;
Query OK, 0 rows affected (0.06 sec)
mysql>
权限限制与远程访问限制
一个数据库对应一个项目,并且指派特定的用户去访问数据库,其中分为管理员用户,和访问用户。
管理员用户:管理整个项目的数据库,包括表的创建,表中字段的创建。只能本地访问。
普通用户 :只能修改表中字段的数据内容,或者添加具体的数据内容。可以通过远程访问。
创建对应用户
管理员用户只能本地去登录访问,访问用户允许远程访问。
mysql> create user 'zxpro-admin'@'localhost' identified by 'qwerty';
Query OK, 0 rows affected
mysql> create user 'zxpro-users'@'%' identified by '123456';
Query OK, 0 rows affected
mysql>
赋予权限
mysql> grant ALL on zx_mysql.* to 'zxpro-admin'@'localhost';
Query OK, 0 rows affected
mysql> grant SELECT,INSERT,UPDATE on zx_mysql.* to 'zxpro-users'@'%';
Query OK, 0 rows affected
mysql>