数据库学习--DCL(数据库控制语言)
DCL
在默认情况下,只有超级管理员才能操作数据库
访问控制权限
mysql实现了复杂的访问控制和权限系统,允许
命令行链接方式
mysql -u 用户名 -p密码 -h 服务器IP地址 -P 服务器端mysql端口 -D 数据u名
当客户端链接到服务器时,mysql访问控制两个阶段
1.链接
2.验证
默认表
创建mysql的时候就会有
user表:包含账户和权限列
db表:那个用户可以访问那个数据库
table_priv和columns_priv表:包含表级和列级操作
procs_priv:包含存储函数和存储过程的表
创建账户:
create user 用户名(格式:username@访问域名) identified by 密码[必须是明文,字符串]
用户名:
username@%username@%.alibaba.com 只能访问alibaba.com 域名下的东西 省略@,表示%
通配符(%)和(-)
百分号或者-表示在任意部位都可以修改
删除用户
drop username@访问域名
drop username@访问域名,username1@访问域名,username2@访问域名
delete from user where user=username
查看用户权限
show grants for username@访问域名
点之前的部分表示数据库,(.)之后的部分表示表上的结果,
设置权限
grant 权限1,权限2【all:所有】on 库.表/库/表 to user 【 identified by 密码[必须是明文,字符串]】 【require 链接数据的方式】 【with [grant option | resource option]】(一般都写)
grant all on ( * . *) to username@访问域名 with grant option;
设置指定权限
create user rfc indentified by ‘密码’
grant select,update,delete on alibaba.* to rfc
执行无权利错误 1142(42000)
允许远程链接
grant all privileges on * . * to ‘root’@’%’ indentfied by ‘mysql’ with grant option; 设置权限密码用户名
刷新权限
flush privileges;
撤销权限
revoke privilege_type [(column_list)],[privilege_type [(column_list)]] on object_type.privilege_level from user,[user1,user2]
示例:
revoke select on * . * from user
修改密码
1.登录MySQL
set password for 用户名@localhost =password(‘新密码’)
2.登录MySQL
update user set password=password(‘密码’) where user=‘root’ and host=‘localhost’
刷新
3.用mysqladmin
mysqladmin -u用户名 -p旧密码 password 新密码
4.忘记root密码或者初始化密码
在windows上1.关闭正在运行的mysql【必须】2.打开DOS窗口,转到mysql\bin3.输入8.0版本以前:mysqld --skip-grant-tables 【跳过权限检查】8.0版本:mysqld --console --sjip-grant-tables --shared-memory4.再打开一个DOS窗口,转到mysql\bin目录5.输入mysql回车,若成功,将出现mysql提示符6.链接数据库: use mysql7.改密码update user set password=password('密码') where user='root' and host='localhost'8.刷新权限flush privileges;9.退出10.重启电脑早进入,修改完成
数据库备份
mysqldump
mysqldump -u 用户名 -p 密码 [-hlocalhost] 数据库名 > 输出的文件.sql
仅备份数据库结构
mysqldump -u 用户名 -p 密码 [-hlocalhost] --no-data 数据库名 > 输出的文件.sql
仅备份数据库数据
mysqldump -u 用户名 -p 密码 [-hlocalhost] --no-create-info 数据库名 > 输出的文件.sql
导出多个数据库
mysqldump -u 用户名 -p 密码 [数据库1,数据库2] > [输出的文件1.sql,输出的文件2.sql]
所有的:
mysqldump -u 用户名 -p 密码 --all-database > [all_dbs_dump_files.sql]
导入数据库
1、首先建空数据库mysql>create database abc;
2、导入数据库方法一:(1)选择数据库mysql>use abc;(2)设置数据库编码mysql>set names utf8;(3)导入数据(注意sql文件的路径)mysql>source /home/abc/abc.sql;方法二:mysql -u用户名 -p密码 数据库名 < 数据库名.sql#mysql -uabc_f -p abc < abc.sql
查询
查询数据库
show databases;删除数据库:drop database sc;
查询表的结构:desc 表名;
查看基本表:show tables;
查询列
show columns from 表名;
show columns from 表名 like '关键字';
show columns from 表名 like '%e%';
show columns from 表名 where Field="关键字";
查询用户
select user from mysql;
当前用户:
select user();
select current_user();
当前登录的用户
select user,host,db,command from information_schema.processlist;[临时表]
数据库维护
分析表
analyze table 表名,【表名2,...】;
分析结果:
Table:表名;
Op:执行的操作
Msg_type:信息类型,状态/警告/错误
Msg_text:显示信息
优化表
optimize table 表名;
检查表
check table 表名;
只管检查,不管修复
修复表
尝试修复,不一定能修好
repair table 表名;
显示表是否修复;
数据库学习--DCL(数据库控制语言)相关推荐
- oracle临时表经常被锁_数据库学习——Oracle 数据库了解与使用
一. 数据库相关概念 1 什么是数据库 所谓的数据库其实就是数据的集合.用户可以对集合中的数据进行新增.查询.更新.删除等操作.数据库是以一定方式储存在一起.能与多个用户共享.具有尽可能小的冗余度.与 ...
- h2数据库学习------h2数据库介绍
介绍 H2是一款内存数据库,适合我们在开发阶段.学习阶段调试代码使用,并不适用于生产阶段,可以满足我们学习与调试代码的需求. H2 数据库是一个用 Java 开发的嵌入式(内存级别)数据库,它本身只是 ...
- 【数据库学习】——数据库可视化--Navicat下载安装连接教程
目录 进入网站 下载可视化软件 安装 双击桌面图标,选择试用 连接数据库 查看数据库中的表,如下所示 常用数据库有: MySQL.sqlite等 进入网站 Navicat | 产品https://ww ...
- DB2数据库学习之数据库备份还原
一.数据库离线(脱机)备份 1.cd /db2_backup 切换到存放备份文件的目录,如果没有要新建 2.db2 list applications for db dbName(数据库名) 确保没人 ...
- linux系统中mysql表中能添加中文_数据库学习之数据库增删改查(另外解决Mysql在linux下不能插入中文的问题)(二)...
数据库增删改查 增加 首先我们创建一个数据库user,然后创建一张表employee create table employee( id int primary key auto_increment, ...
- 数据库学习--DQL(数据库查询语言)
查询语句 select * from 表 where 条件 [inner/left/right join 表1 on 条件] group by 列名 having 组 order by 列名 limi ...
- h2数据库学习----h2数据库基本使用
依赖 <dependency><groupId>org.glassfish.hk2</groupId><artifactId>hk2</artif ...
- 【数据库学习笔记】——操作sqlite(增删改查)以及cursor的方法介绍
目录 1.sqlite数据库介绍 1)常见的数据库操作 2)数据操作常见步骤 2.向数据表中增加数据(insert into) 1)向数据表中添加一条记录 2)向数据表中一次性添加多条记录 3.修 ...
- 数据库基础之一--DDL(数据库定义语言),DCL(数据库控制语言)
Mysql是一个非常典型的C/S结构的应用模型,所以Mysql连接必须依赖于一个客户端或者驱动. 在linux中支持两种连接模式:TCP/IP模式和socket SQL语句的四部分: DDL:数据定义 ...
最新文章
- Spring框架系列之AOP思想
- C9---include,编译
- 从介质部署额外域控制器
- 汇编LAHF指令学习 - 使用emu8086
- 运维岗位技能风向标!
- Openlayers中实现地图上添加一条红色直线
- Gcc编译链接及常用选项总结
- 静态成员常量的初始化
- Xcode设置苹果应用的app icon和launch image(应用图标和启动页面)
- Python爬取天堂网图片
- Ubuntu下安装多个Java及切换
- 一个敷衍的开头。。。
- java——API——ArrayList集合
- Python Pexpect库的简单使用
- 无限循环小数转化分数
- PlatoFarm几大创新经济模型,给予当下元宇宙市场的启发
- 豆沙绿 RGB值 hex值 及eclipse设置背景色步骤
- camera知识储备2
- 教你看电脑的配置,学下以后会用得着。
- 干支纪年java_天干地支纪年法 - osc_xcg0s5cw的个人空间 - OSCHINA - 中文开源技术交流社区...
热门文章
- (CSS3)CSS3- 最常用的属性(一)
- 企业实战|CentOS8安装Zabbix 4.4
- zabbix自动发现端口
- shell awk实现实时监控网卡流量脚本(常见应用二)
- 查看编译class文件时,使用的JDK版本(只能查看到大版本)
- 【PostgreSQL-9.6.3】物化视图
- 小酌重构系列[20]——用条件判断代替异常
- vim 编辑器 打开GB2312、GBK文件乱码解决方法
- MyEclipse 2015 运行tomcat 内存溢出的解决方法
- SecureCRT连接阿里云ECS服务器,经常掉线的解决方案