mysql 多表查询
复制表:将源表xxx复制为新表yyy
create table yyy select * from xxx;
将指定的查询结果复制为新表zzz
create table zzz sql查询语句;
create table user2 select * from user;
create table user3 select name,shell,uid from user limit 5;
create table user4 select * from user where 1=2;
将源表vvv的名称改为www
alter talble vvv rename to www;
多表查询
格式1:select 字段名列表 from 表a , 表b ;
格式2:select 字段名列表 from 表a , 表b where 条件;
select name,uid from user where uid< (select avg(uid) from user);
select name,uid from user where uid> (select avg(uid) from user);
create database db4;
create table db4.f1 select name,uid,gid from user limit 10;
select name from db3,user where name in (select name from db4.f1 where uid<=5);
where子查询
把内层查询结果作为外层查询的查询条件
select 字段名列表 from 表名 where 条件
(select 字段名列表 from 表名 where 条件);
列子:输出年龄小于平均年龄的学生的名字和年龄
select name,age from student where age< (select avg(age) from student);
左连接查询;当条件成立时,把左表中与条件匹配的记录全显示
select 字段名列表 from 表a left join 表b on 条件表达式;
右连接查询;当条件成立时,显示右表的所有数据
select 字段名列表 from 表a right join 表b on 条件表达式;
create table w1 select name,uid,password,homedir from user limit 3;
create table w2 select name,uid,gid,shell from user limit 5;
select * from w1,w2;
select w1.name,w2.name from w1,w2;
select w1.name,w1.uid,w2.* from w1,w2;
select * from w1,w2 where w1.name=w2.name and w1.uid=w2.uid;
select w1.name,w1.uid,w2.name,w2.uid from w1,w2
where w1.name=w2.name and w1.uid=w2.uid;
select w1.name,w2.name from w1,w2 where
w1.uid=3 and w2.uid=3;
select * from w1,w2 where w1.uid=3 and w2.uid=3;
常见的mysql管理工具
类型 界面 参做系统 说明
mysql 命令行 跨平台 mysql官方bundle包自带
mysql-workbench 图形 跨平台 mysql官方提供
mysql-front 图形 windows 开源,轻量级客户端软件
phpmyadmin 游览器 跨平台 开源,需lamp平台
navicat 图形 windows 专业,功能强大,商业版
基本思路
安装httpd, mysql, php-mysql 及相关包
启动httpd 服务程序
解压phpmyadmin 包,部署到网站目录
配置config.inc.php 指定mysql 主机地址
创建授权用户
游览器访问,登录使用
yum -y install httpd php php-mysql
systemctl start httpd; systemctl enabled httpd
tar -zxf phpmyadmin-2.11.11-all-languages.tar.gz -C /var/www/html/
cd /var/www/html/
mv phpmyadmin-2.11.11-all-languages/ phpmyadmin
cp phpmyadmin/config.sample.inc.php phpmyadmin/config.inc.php
vim /var/www/html/phpmyadmin/config.inc.php
cfg[‘blowfishsecret′]=‘plj123′
c
f
g
[
‘
b
l
o
w
f
i
s
h
s
e
c
r
e
t
′
]
=
‘
p
l
j
123
′
cfg['Servers'][$i][‘host’] = ‘localhost’
恢复mysql 管理密码
1,停止mysql 服务程序
systemctl stop mysqld
2,跳过 授权表启动mysql 服务程序
skip-grant-tables //写入/etc/my.cnf配置文件
3,重设root 密码
vim /etc/my.cnf
[mysqld]
skip-grant-tables
systemctl restart mysqld
mysql
update mysql.user set authentication_string=password(“654321”)
where user=”root” and host=”localhost”;
flush privileges;
quit
vim /etc/my.cnf
[mysqld]
skip-grant-tables
systemctl restart mysqld
mysql -uroot -p654321
知道密码时直接修改秘密
mysqladmin -hlocalhost -uroot -p password “新秘密”
mysql 授权库和表信息
授权库 mysql , 主要的几个表
user 表, //存储授权用户的访问权限
db 表, //存储授权用户对数据库的访问权限
tables_priv 表, //存储授权用户对表的访问权限
columns_priv 表, //存储授权用户对字段的访问权限
desc mysql.user;
select host,user from mysql.user;
select * from mysql.user where user=”root” and host=”localhost”\G;
show grants for root@”localhost”;
desc mysql.db;
select host,user,db from mysql.db;
select * from mysql.db where db=”sys” and user=”mysql.sys”\G;
desc mysql.tables_priv;
select * from mysql.tables_priv;
grant 配置授权
grant 权限列表… …on 库名.表名
to 用户名@’客户端地址’
identified by ‘密码’
[with grant option]; //是否有授权权限
权限列表
all :匹配所有权限
select,update,insert… …
select,update (字段1,… …,字段N)
客户端地址
% : //匹配所有主机
192.168.1.% : //匹配指定的一个网段
192.168.1.1 : //匹配值指定IP地址的单个主机
%.tarena.com : //匹配一个DNS区域
svr1.tarena.com : //匹配指定域名的单个主机
查看用户授权
管理员可查看其他用户的权限
show grants for 用户名@’客户端地址’;
撤销用户权限
revoke 权限列表 on 库名.表名 from 用户名@”客户端地址”;
重设用户密码
授权用户连接后修改密码
set password = password(“新密码”);
管理员重置授权用户连接密码
set password for 用户名@’用户端地址’=password(“新密码”);