1.1 复制表:
作用1 : 备份表
作用2 : 快速建表
命令格式: create table 库名.表名 sql查询命令
mysql> create table udb4.userbak select * from db3.user;
mysql> select * from userbak;
mysql> create table db4.user2 select * from db3.user where uid <= 10;
mysql> select * from user2;
mysql> create table db4.user3 select * from db3.user where 1=2; # 将db3.user的表结构赋与db4.user3,,,,,,,where 1=2 指的是事件是假的;
mysql> desc db3.user; #db3.user的表结构和db4.user3的表结构一样,但是db3.user的表结构的键值不会赋与db4.user3,需要自己额外添加键值,
1.2 多表查询:
格式1:多表查询
select 字段名列表 from 表名列表; 笛卡尔集: 表记录相乘的积是查询结果;
select 字段名列表 from 表名列表 where 条件;
mysql> create table db4.t1 select name,uid,shell,password from db3.user limit 3; # 通过复制表格的方法创建db4.t1 表格
mysql> create table db4.t2 select name,uid,homedir from db3.user limit 5; # 通过复制表格的方法创建db4.t2 表格
mysql> select * from t1,t2 where t1.name="root" t2.name="root"; # 从t1,t2表中查询t1.name="root" t2.name="root" 所有列
mysql> select t1.name,t1.uid,t2.homedir from t1,t2 where t1.name="root" and t2.name="root"; # 字段名列表: name,t1.uid,t2.homedir 这些列 ,表明列表:t1,t2
mysql> select * from t1,t2 where t1.uid=t2.uid; #
+--------+------+---------------+----------+--------+------+---------+
| name | uid | shell | password | name | uid | homedir |
+--------+------+---------------+----------+--------+------+---------+
| root | 2 | /bin/bash | x | root | 2 | /root |
| bin | 2 | /sbin/nologin | f | root | 2 | /root |
| root | 2 | /bin/bash | x | bin | 2 | /bin |
| bin | 2 | /sbin/nologin | f | bin | 2 | /bin |
| daemon | 3 | /sbin/nologin | f | daemon | 3 | /sbin |
+--------+------+---------------+----------+--------+------+---------+
格式2: where 嵌套查询(子查询):把内层查询结果作为外层查询的查询条件;
where 条件 (select 字段名列表 from 表名 where 条件 );
mysql> select name,uid from db3.user where uid < (select avg(uid) from db3.user); #db3.user表里输出uid值小于uid字段平均值 的用户名和uid;
mysql> select name from db4.t1
mysql> select name from db3.user where name in (select name from db4.t1); #
mysql> create table db4.t3 select name,uid,shell from db3.user limit 5;
两个表里面存储的数据信息相同,但是有重复的: (比较两个表里面相同的数据)
格式3: 左连接查询 (以左边的表为主显示查询结果)
select 字段名列表 from 表名 lest join 表名 on 条件;
格式4 : 右连接查询(以右边的表为主显示查询结果)
select 字段名列表 from 表名 right join 表名 on 条件;
mysql> create table db4.t3 select name,uid,shell from db3.user limit 5;
mysql> create table db4.t4 select name,uid,shell from db3.user limit 9;
mysql> select * from db4.t3 left join db4.t4 on t3.uid = t4.uid;
| name | uid | shell | name | uid | shell |
+--------+------+---------------+--------+------+---------------+
| root | 2 | /bin/bash | root | 2 | /bin/bash |
| bin | 2 | /sbin/nologin | root | 2 | /bin/bash |
| root | 2 | /bin/bash | bin | 2 | /sbin/nologin |
| bin | 2 | /sbin/nologin | bin | 2 | /sbin/nologin |
| daemon | 3 | /sbin/nologin | daemon | 3 | /sbin/nologin |
| adm | 4 | /sbin/nologin | adm | 4 | /sbin/nologin |
| lp | 5 | /sbin/nologin | lp | 5 | /sbin/nologin |
+--------+------+---------------+--------+------+---------------+
mysql> select * from db4.t3 right join db4.t4 on t3.uid = t4.uid;
+--------+------+---------------+----------+------+----------------+
| name | uid | shell | name | uid | shell |
+--------+------+---------------+----------+------+----------------+
| root | 2 | /bin/bash | root | 2 | /bin/bash |
| root | 2 | /bin/bash | bin | 2 | /sbin/nologin |
| bin | 2 | /sbin/nologin | root | 2 | /bin/bash |
| bin | 2 | /sbin/nologin | bin | 2 | /sbin/nologin |
| daemon | 3 | /sbin/nologin | daemon | 3 | /sbin/nologin |
| adm | 4 | /sbin/nologin | adm | 4 | /sbin/nologin |
| lp | 5 | /sbin/nologin | lp | 5 | /sbin/nologin |
| NULL | NULL | NULL | sync | 6 | /bin/sync |
| NULL | NULL | NULL | shutdown | 7 | /sbin/shutdown |
| NULL | NULL | NULL | halt | 8 | /sbin/halt |
| NULL | NULL | NULL | mail | 9 | /sbin/nologin |
+--------+------+---------------+----------+------+----------------+
二,mysql 管理工具 (访问mysql数据库服务的方式)
命令行
安装图形软件
web页面
1部署运行环境
[root@host50 ~]# yum -y install httpd php php-mysql.x86_64
[root@host50 ~]# systemctl start httpd.service
[root@host50 ~]# systemctl enable httpd.service
2.安装软件 :(在官网下载软件包)
cd /root
[root@host50 ~]# tar -zxvf phpMyAdmin-2.11.11-all-languages.tar.gz
[root@host50 ~]# mv phpMyAdmin-2.11.11-all-languages /var/www/html/admin # 移动目录并且重命名
3.修改软件配置文件
[root@host50 ~]# cd /var/www/html/admin/
[root@host50 ~]# cp config.sample.inc.php config.inc.php #将配置文件进行复制
[root@host50 admin]# vim config.inc.php # 修改配置文件
$cfg['blowfish_secret'] = '123'; # 填写密码
$cfg['Servers'][$i]['host'] = 'localhost'; # 如果phpMyAdmin-2.11.11-all-languages.tar.gz是安装在另外一个服务机器里面,
则这边应该在 $cfg['Servers'][$i]['host'] =后面应该填写数据库服务器的地址,在该实验中由于软件包是安装在数据库这个服务器里面,所以直接填写localhost
4.在客户端访问软件
5.使用数据库管理登陆
用户 root
密码 123456
相当于 mysql -uroot -p123456
四。用户授权及撤销
4.1 恢复root 密码
1.)停止 Mysql的服务程序:[root@host50 ]# systemctl stop mysqld.service
2) 跳过授权表启动mysql 服务,配置主配置文件:
[root@host50 admin]# vim /etc/my.cnf
[mysql] # 在 [mysql]下面添加skip-grant-tables
skip-grant-tables # 添加这条
#validate_password_length=6 # 需要把密码策略注释掉
#validate_password_policy =0
3) 重设root密码:
[root@host50 ]# mysql
mysq l> desc mysql.user; 查看user表结构
其中 user: 登陆的用户名 host : 客户端地址 authentication_string 表示加密处理
mysql> select user,host,authentication_string from mysql.user;
+-----------+-----------+-------------------------------------------+
| user | host | authentication_string |
+-----------+-----------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+-----------+-------------------------------------------+
mysql> update mysql.user # 更新表格
-> set authentication_string=password("123456") # 重新设置登陆密码
-> where
-> user="root" and host="localhost"; # 查询条件
mysql> flush privileges; #刷新
[root@host50 admin]# vim /etc/my.cnf # 重新配置文件
[mysqld]
validate_password_length=6 // 将密码策略注释去掉
validate_password_policy =0 //将密码策略注释去掉
#skip-grant-tables //将这条注释掉
[root@host50 admin]# systemctl restart mysqld #重新重起mysqld
[root@host50 admin]# mysql -uroot -p123456 # 用自己重新设置的密码登陆mysql
在shell命令行修改root登陆密码
[root@host50 admin]# mysqladmin -hlocalhost -p password "abc123"; # password表示密文传输
Enter password: # 此时输入的之前用root用户登陆数据库的密码
[root@host50 admin]# mysql -uroot -p123456 # 使用修改后的密码登陆数据库
host50 是数据库的操作系统
4.2 用户授权: 在数据库服务器上添加新的连接用户名并设置访问权限
——授权命令:
格式: mysql> grant 权限列表 on 库名.表名 to 用户名@“客户端地址” identified by "密码" with grant option; #
#(加上with grant option 表示新添加的用户的权限 拥有 grant 权限:指的是能添加其他的用户权限)
注意事项:
---当 库名.表名 为 *.* 时 ,匹配所有库和所有表
权限列表 :
all: 匹配所有权限
select,update,insert
select , update(字段1,,,,)
usage 无权限
%:匹配所有的主机
192.168.1.% :匹配指定的一个网段
192.168.1.1 :匹配指定的ip地址
例子:
mysql> grant all on *.* to mydba@"%" identified by "123456" with grant option;
mysql> grant all on db3.* to admin@"localhost" identified by "plj123";
mysql> grant select,update(name) on db3.user to yaya@"192.168.4.51" identified by "123456";
mysql> grant select on *.* to mydba2@"%" identified by "123456";
查看mysql数据库表格 :mysql.user,mysql.db,mysql.columns_priv
mysql> select use,host from mysql.user; # 查看拥有新添加的用户
mysql> select * from mysql.user\G;
mysql> select user,host from mysql.db;
mysql> select user,host from mysql.tables;
mysql> select user,host from mysql.columns_priv;
[root@host50 admin]# mysql -uadmin -pplj123 # 在主机里面用uadmin用户登陆
mysql> show databases; # 只是显示db3的库
mysql>use db3;
mysql>show tables; # 只是显示db3库的所有表格;
mysql> show grants; #查看当前用户拥有的权限
[root@host51 ~]# mysql -h192.168.4.50 -uyaya -p123456; # 在主机host51用yaya 用户登陆192.168.4.50的数据库
mysql> select user(); # 查看当前登陆的用户
测试权限,执行管理库的命令,管理表的命令 记录管理命令
mysql> show databases; # 只是显示db3库
mysql>use db3;
mysql>show tables; # 只是显示user表格;
mysql> update user set name="haha" where name="root"; # 可以修改成功
mysql> insert into user(name) values("sss"); #不能修改,权限不足
mysql> update user set password="haha" where password="f"; #不能修改,权限不足
4.3 权限撤销 : 把添加用户的访问权限删除
mysql> revoke 权限列表 on 数据库名 from 用户名@“客户端地址”;
mysql> show grants for mydba@"%"; #管理员可查看其他用户的权限
mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
mysql> revoke grant option on *.* from mydba@"%";
mysql> show grants for mydba@"%";
mysql> revoke delete,insert,update on *.* from mydba@"%";
mysql> revoke all on *.* from mydba@"%";
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION 赋予权限的能力
4.4 删除添加的用户: drop user 用户名@“客户端的地址”;
mysql> drop user mydba2@"%";
4.5授权库 mysql: 存储授权信息的库,使用不同的表记录授权信息
mysql> use mysql;
mysql> show tables;
user表 :存储已有的授权用户 mysql> desc mysql.user; mysql> select user,host from mysql.user;
db表 : 存储授权用户对库的访问权限
tables_priv 表: 存储授权用户对表的访问权限
columns_priv表 : 存储授权用户对表里面字段的访问权限
管理员root 修改 授权用户的密码
set password for 用户名@“客户端"=password("abc123");
mysql> set password for yaya@"192.168.4.51"=password("abc123");
授权用户登陆后修改密码
mysql> set password=password("123456");
用户授权--知识点总结
授权库mysql
授权命令 grant
权限撤销 revoke
删除授权用户 drop user
管理源root 修改授权用户密码
授权用户登陆后修改登陆密码