欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

MySQL常用管理SQL语句

程序员文章站 2022-11-28 15:17:29
[TOC] 前言 DDL DDL,中文为数据定义语言,DDL的特点是对数据库内部的对象进行create(创建)、alter(修改)、drop(删除)等操作,负责管理数据库的基础数据,不涉及对表中内容的操作和更改。 DCL DCL,中文为数据控制语言,DDL的特点是对数据库内部的对象grant(用户授 ......

前言

ddl

ddl,中文为数据定义语言,ddl的特点是对数据库内部的对象进行create(创建)、alter(修改)、drop(删除)等操作,负责管理数据库的基础数据,不涉及对表中内容的操作和更改。

dcl

dcl,中文为数据控制语言,ddl的特点是对数据库内部的对象grant(用户授权)、revoke(权限回收)、commit(提交)、rollback(回滚)。

dml

dml,中文为数据操作语言,dml的特点是对数据库内部的对象insert(增)、delete(删)、update(改)、select(查),主要针对数据库中表内的数据进行操作。

1.ddl语句之管理数据库

1.1.创建数据库
create database test;  #创建默认字符集数据库
create database test_gbk character set gbk collate gbk_chinese_ci;  #创建gbk字符集数据库
create database test_utf8 character set utf8 collate utf8_general_ci;  #创建utf8字符集数据库
show create database test\g  #查看建库语句
1.2.显示数据库
show databases;  #查看所有数据库
show databases like 'test';  #匹配test字符串的数据库
show databases like 'test%';  #%为通配符,表示匹配以test开头的所有数据库
1.3.切换数据库
use test;  #切换到test库
select database();  #查看当前管理员所在的库名
1.4.查看数据库包含的表信息
1.4.1.切换到数据库里面去查看表信息
use test;
show tables;
1.4.2.在库外面查看库里的表信息
show tables from test;  #查看指定库test中包含的表
show tables in test_gbk;
show tables from mysql like 'db%';  #匹配包含指定字符开头的表
1.5.删除数据库
drop database test_gbk;  #删除test_gbk数据库
show databases like 'test_gbk';

2.ddl&&dcl语句之管理用户

2.1.查看当前数据库的用户列表

查看数据库用户列表属于dml负责的部分内容。

select user,host from mysql.user;  #这里的select关键字表示查询,是dml语句的关键字之一,user和host为要查找的mysql表的字段,from表示去哪查,mysql.user是mysql库里的user表。数据库的标准用户由“用户”@“主机名”共同组成的,两者加起来是数据库用户的唯一标识。
2.2.创建数据库用户
create user test1@localhost identified by '123456';
select user,host from mysql.user;  #查看所有数据库用户
create user test2@'192.168.1.%' identified by '123456';
select user,host from mysql.user where user='test2;  #查看指定数据库用户
show grants for test2@'192.168.1.%';
#usage表示连接权限
2.3.删除数据库用户
drop user 'test1'@'localhost';  #删除数据库用户命令
select user,host from mysql.user where user='test1';  #删除后检查数据库用户
flush privileges;  #使得处理用户后,对数据库生效,有数据库改动的情况,执行这个命令

delete from mysql.user where user='test2' and host='192.168.1.%';
flush privileges;
2.4.授权数据库用户
2.4.1.创建test3用户,对test库具备所有权限,允许从localhost主机登录管理数据库,密码是123456。
grant all privileges on test.* to 'test3'@'localhost' identified by '123456';
select user,host from mysql.user where user='test3';
show grants for 'test3'@'localhost';
#all privileges就是授权的权限
2.4.2.授权与root同等地位的system用户权限。
show grants for root@localhost;  #查看root用户的权限
grant all on *.* to 'system'@'localhost' identified by '123456' with grant option;
grant proxy on ''@'' to 'system'@'localhost' with grant option;  #允许创建代理用户
show grants for system@localhost;
2.5.授权的权限列表
show grants for 'test3'localhost';
#all privileges就是授权的权限
revoke select on test.* from 'test3'@'localhost';
show grants for 'test'@'localhost';
#权限all被拆分成了更细的权限

mysql的all privileges的权限列表

权限 说明
select 查询(数据)
insert 插入(数据)
update 修改(数据)
delete 删除(数据)
create 创建(数据库、表等对象)
drop 删除(数据库、表等对象)
reload 重载
shutdown 关闭
process 进程
file 文件
references 参考资料
index 索引
alter 修改(数据库、表等对象)
show databases 查看数据库
super 超级权限
create temporary tables 创建临时表
lock tables 锁表
execute 执行
replication slave 从复制权限
replication client 从客户端复制
create view 创建视图
show view 查看视图
create routine 创建存储过程
alter routine 修改存储过程
create user 创建用户
event 事件
trigger 触发器
create tablespace 创建表空间
2.6.企业中grant授权权限问题说明
2.6.1.企业里主数据库用户的授权问题说明

在企业生产环境中,如果是以web形式连接数据库的用户,那么尽量不要授予all权限,最好是分拆授权,比如,授予select、insert、update、delete等适合web使用的dml语句关键字权限。

grant select,insert,update,delete on oldboy.* to test3@'172.16.1.%' identified by '123456';

#注意:授权用户权限时有如下3条安全红线不要轻易跨过。
1、权限不能用all,要应用select、insert、update、delete等具体权限。
2、库不能用"*.*",而应用"oldboy.*"格式具体到库。
3、主机不能用%,而应用内网ip段,即'192.168.0.%'格式。

php程序语言连接mysql的代码:

<?php
  //$link_id=mysql_connect('数据库主机名','用户','密码');
    $link_id=mysql_connect('172.16.1.7')
    if($link_id){
        echo "mysql successful by oldboy !";
    }else{
        echo mysql_error();
    }
?>