DCL
在默认情况下,只有超级管理员才能操作数据库
mysql实现了复杂的访问控制和权限系统,允许
mysql -u 用户名 -p密码 -h 服务器IP地址 -P 服务器端mysql端口 -D 数据u名
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
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
set password for 用户名@localhost =password(‘新密码’)
update user set password=password(‘密码’) where user=‘root’ and host=‘localhost’
mysqladmin -u用户名 -p旧密码 password 新密码
在windows上
1.关闭正在运行的mysql【必须】
2.打开DOS窗口,转到mysql\bin
3.输入
8.0版本以前:mysqld --skip-grant-tables 【跳过权限检查】
8.0版本:mysqld --console --sjip-grant-tables --shared-memory
4.再打开一个DOS窗口,转到mysql\bin目录
5.输入mysql回车,若成功,将出现mysql提示符
6.链接数据库: use mysql
7.改密码
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 表名;
显示表是否修复;