多表查询、用户授权

多表查询
复制表
1.将源表 xxx 复制为新表 yyy
create table yyy select * from xxx
2,将指定的表查询结果复制为新表
create table zzz select * from
3.将源表 vvv 的名称改为 www
alter table vvv rename to www
create table user2 select * from user; (将user 复制user2)
create table user3 select * from user limit 10; (将user表 前十行复制成新表user3)
create table aaa select * from user where 1 = 2; (注意user 主键不会继承到 表aaa)—只复制表结构
多表查询
格式一 select 字段名列表 from 表a,表b
格式二 select 字段名类表 from 表a,表b where 条件;
select * from t1,t2; (用t1 * t2) 55=25行 ----笛卡尔集
select t1.
,t2.name from t1,t2; (t1。t2)
select * from t1,t2 where t1.uid = t2.uid; (显示两表中相同的uid)
select * from t1,t2 where t1.uid=1 and t2.uid=1; (查询两表中uid都为1)
select t1.name , t2.name , t1.uid , t2.uid from t1,t2 where t1.uid = t2.uid; (查询两表name uid,并且uid相等)
select t1.name , t2.name , t1.uid , t2.uid from t1,t2 where t1.uid = t2.uid and t1.name=“root”;
±-----±-----±-----±-----+
| name | name | uid | uid |
±-----±-----±-----±-----+
| root | root | 1 | 1 |
±-----±-----±-----±-----+
========select t1.name , t2.name , t1.uid , t2.uid from t1,t2 where t1.uid = t2.uid and t1.name=“root” and t2.name=“root”;
select t1.* ,t2.password , t2.shell from t1,t2 where t1.uid = t2.uid and t1.name=“root”
±-----±-----±--------±---------±----------+
| name | uid | homedir | password | shell |
±-----±-----±--------±---------±----------+
| root | 1 | /root | a | /bin/bash |
±-----±-----±--------±---------±----------+
select name from user where name in (select name from t1); (查询user 表中name 并且t1表中也有)
select name from user where name in (select user from mysql.user where host=“localhost”); (查询user表中 name )
select name,uid from user where uid < (select avg(uid) from user); (查询 user表 中 name uid 小于 平均 uid)
连接查询
t1表±-------±-----±--------+
| name | uid | homedir |
±-------±-----±--------+
| root | 1 | /root |
| bin | 3 | /bin |
| daemon | 5 | /sbin |
±-------±-----±--------+
t3表
±-------±-----±---------------+
| name | uid | homedir |
±-------±-----±---------------+
| root | 1 | /root |
| bin | 3 | /bin |
| daemon | 5 | /sbin |
| adm | 7 | /var/adm |
| lp | 9 | /var/spool/lpd |
| sync | 11 | /sbin |
±-------±-----±---------------+
左连接
用法 select 字段名列表 from 表a left join 表b on 条件表达式
select * from t1 left join t3 on t1.name=t3.name; (以左t1表中为主 查询 name)
±-------±-----±--------±-------±-----±--------+
| name | uid | homedir | name | uid | homedir |
±-------±-----±--------±-------±-----±--------+
| root | 1 | /root | root | 1 | /root |
| bin | 3 | /bin | bin | 3 | /bin |
| daemon | 5 | /sbin | daemon | 5 | /sbin |
±-------±-----±--------±-------±-----±--------+

右连接
select 字段名列表 from 表a right join 表b on 条件表达式
select * from t1 right join t3 on t1.name=t3.name; (以右t3 为主 查询 当t1 表中没有的会以null 显示)
±-------±-----±--------±-------±-----±---------------+
| name | uid | homedir | name | uid | homedir |
±-------±-----±--------±-------±-----±---------------+
| root | 1 | /root | root | 1 | /root |
| bin | 3 | /bin | bin | 3 | /bin |
| daemon | 5 | /sbin | daemon | 5 | /sbin |
| NULL | NULL | NULL | adm | 7 | /var/adm |
| NULL | NULL | NULL | lp | 9 | /var/spool/lpd |
| NULL | NULL | NULL | sync | 11 | /sbin |
±-------±-----±--------±-------±-----±---------------+

mysql 服务图形管理工具

恢复mysql 管理员密码(系统管理员有权限)

  1. 停止mysql服务程序 systemctl stop mysqld
  2. 跳过授权表启动mysql服务程序 (skip-grant-tables 注配置文件有validate_password_policy=0
    validate_password_length=6
    先注释掉) vim /etc/my.cnf
    systemctl restart mysqld (启动)
    mysql (进入)
    update mysql.user set authentication_string=password(“654321”) where user=“root” and host=“localhost”; (修改密码 password 是密码加密函数)
    flush privileges (确定)
    exit (退出数据库)
    vim /etc/my.cnf (将skip-grant-tables 注释 validate_password_policy=0
    validate_password_length=6 注释打开)
    重启服务 systemctl restart mysqld
    mysql -uroot -p654321;

修改数据库管理员本机登入密码 (必须知道当前密码)
mysqladmin (-hlocalhost) -uroot -p password “123456”-----新密码
Enter password: (输入当前密码)

mysql授权
s用户授权 (在数据库服务器上添加可以连接数据库服务器的用户并设置访问权限及密码)
user表,存储授权用户的访问权限 select host,user from mysql.user;
db表,存储授权用户对数据库的访问权限 select host,db,user from mysql.db;
tables_priv表,存储授权用户对表的访问权限
columns_priv表,存储授权用户对字段的访问权限

授权命令 grant 权限列表(select insert all (所有权限) usage(无权限只能连))… on 库名.表名 to 用户名(admin)@‘客服端地址(192.168.4.%)’ identified by “密码” with grant option (是否有授权权限)
grant select(name,uid) on user

注意事项
. 表示所有库 所有表
授权设置存放在 mysql 库的 user 表
权限列表
all 匹配所有
select update insert
select,update(字段一,…字段N)
客户端地址
% 匹配所有
192.168.1.% 匹配指定的一个网段
192.168.1.1 匹配指定ip地址 单个主机
%.tarena.com 匹配一个DNS 区域

show grants for root@“localhost”; (user表)
show grants for “mysql.sys”@localhost (db表)
select user,db,host,table_name from tables_priv;(tables_priv表)
show grants for “mysql.sys”@“localhost”; (tables)
select * from mysql.columns_priv; (columus_priv 表)

select host,db,user from db;
±----------±----±----------+
| host | db | user |
±----------±----±----------+
| localhost | sys | mysql.sys |
±----------±----±----------+
show grants for “mysql.sys”@localhost;
±--------------------------------------------------------------+
| Grants for mysql.sys@localhost |
±--------------------------------------------------------------+
| GRANT USAGE ON . TO ‘mysql.sys’@‘localhost’ |
| GRANT TRIGGER ON sys.* TO ‘mysql.sys’@‘localhost’ |
| GRANT SELECT ON sys.sys_config TO ‘mysql.sys’@‘localhost’ |

grant all on . to mydba@"%" identified by “123456” with grant option; (授权限 所有网段都能用mydba 用户登入 并且对库有任何权限)
select * from user where user=“mydba”\G; (查看权限)
show grants for mydba@"%"; (管理员查看其他用户)
show grants for 用户@“客户端地址”

select user(); (查看当前登入地址和用户)
±-------------------+
| user() |
±-------------------+
| mydba@192.168.4.51 |
±-------------------+
show grants; (显示访问权限)
±-------------------------------------------------------------+
| Grants for mydba@% |
±-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON . TO ‘mydba’@’%’ WITH GRANT OPTION |
±-------------------------------------------------------------+
grant select,insert on userdb.user to usera@“localhost” identified by “123456”; (授权本地用户usera 只对userdd.user表 有查看和添加 密码为123456)
grant select on userdb.user to sqler01@“192.168.4.%” identified by “888888”;(授权192.168.4.网段可以用sqler01用户登入 只对表有查看权限)

用户改密码
set password = password(“111111”); (用户登入后修改密码)
断开连接使用修改密码登入
mysql -h192.168.4.50 -umydab -p111111
管理员修改用户密码
select host,user from mysql.user (查看有什么用户)
±------------±----------+
| host | user |
±------------±----------+
| % | mydba |
| 192.168.4.% | sqler01 |
| localhost | mysql.sys |
| localhost | root |
| localhost | sqler02 |
| localhost | usera |
±------------±----------+
set password for mydba@“%”=password(“123456”); (修改用户 mydab 密码)
撤销授权
撤销用户权限
revoke 权限列表 on 库名.表名 from 用户名@“客户端地址”
revoke grant option on . from mydba@"%" (撤销mydba 用户 授权 权限)
revoke all on . from mydba@“%” (撤销所有权限 ,但用户存在 还能连数据库)
删除授权用户

  1. delete from mysql.user where user=“mydab” (删除表记录用户)
    flush privileges; (确定)
    delete from mysql.user where user=“mydba” and host=“%” (删除用户与地址)
  2. 使用sql命令删除 (用户与权限都删除)
    drop user 用户@“客户端地址”
    drop user esqler02@“localhost”
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值