MySQL的安装
- 安装 http://dev.mysql.com/downloads/mysql
使用MySQL关闭防火墙,selinux,选择适合当前的bundle-包
因为redhat系统自带Mariadb 所以需要升级安装并安装依赖包
进程名 mysqld 所有者和所属组 mysql
yum -y install perl-JSON
tar -xf mysql-5.7.17-1.el7.x86_64.rpm
rpm -Uvh mysql-community-*.rpm //升级安装
相关文件
/var/log/mysqld.log //初始密码就在这个文件内(日志文件)
[root@mysql ~ ] #vim /etc/my.cnf
default-storage-engine=存储引擎名称
validate_password_policy=0 # 永久修改密码策略为0
validate_password_length=6 # 修改密码长度
权限密码修改方式
- 初始设置密码
[root@localhost ~]# mysql -uroot -p'初始密码' -hlocalhost
// mysql -u用户名 -p密码 -h服务器
mysql>alter user root@localhost identified by "123_adcD";
// 改密码来进行新的操作
mysql> show global variables like "%password%" //查看密码策略
mysql>set global validate_password_policy=0;
//只验证长度 密码策略三个级别 0/low (长度) 1/medium 2/strong
Query OK, 0 rows affected (0.00 sec)
mysql>set global validate_password_length=6;
//修改密码长度,默认值是8个字符
Query OK, 0 rows affected (0.00 sec)
- 恢复管理员密码
vim /etc/my.cnf
skip-grant-tables //跳过授权表
systemctl restart mysqld //重启mysql服务
mysql //进入数据库mysql
mysql>update mysql.user set authentication_string=password(“密码”) where user=”root“ and host=”localhost“; //更新密码
mysql>flush privileges; //刷新特权
vim /etc/my.cnf
#skip-grant-tables //取消跳过授权表
systemctl restart mysqld //再次重启
mysql -uroot -p密码
- 在shell命令行修改登陆密码
mysqladmin -uroot -p password “新密码”
enter password: //输入旧密码
- 重设用户密码
set password= password(“新密码”) //修改当前登录用户密码
set password for 用户名@‘客户端地址’=password(“新密码”)
//管理员修改其他用户密码
数据库存储
库 >表>记录
库名:就是类似于文件夹
use 库名 ; //进入库
表名:就是类似于文件
字段 | 字段… |
---|---|
记录1 | 记录(就是文件里的行) |
记录2 | 记录… |
操作指令(重要)
DDL 数据定义语言 (create-创建 alter-更改 drop-删除)
create 命令,用来创建库,表,索引…
create database 库名 ; //创建库
create table 库名.表名(字段1 字段类型(宽度) 约束条件...); //新建表
create table 新表 select 字段1..N from 源表 where 条件; //复制表从源表,可以选择字段或者按照条件复制,不过不会复制对应的键值和存储引擎
create index 索引名 on 表名(字段名); //设置index字段
drop 命令 用来删除库,表,索引
drop database 库名 ; //删除库
drop table 表名; //删除表
drop index 索引名 on 表名 //删除表的索引字段
alter 命令 用来 添加,更改,删除字段和主键,外键,重命名表名
alter table 表名 add/modify 字段 类型(宽度) 约束条件 after 字段名/first; //添加/修改字段
alter table 表名 add primary key(字段名); //设置主键
alter table 表名 change 源字段 新字段 类型(宽度) 约束条件; //修改字段名 当跟新类型和约束条件时,也可修改字段类型
alter table 表名 drop 字段名; //删除字段
alter table 表名 drop primary key; //删除主键,如果有自增,必须先删除
alter table 表名 drop foreign key 约束名; //删除外键
alter table 表名 rename 新表名; //修改表名 相对应的文件名,也会改变;
库的命名规则:可以字母/数字/下划线 但不能纯数字,区分大小写,不可以使用指令关键字,特殊字符
DML 数据操作语言 (insert-插入 update-更新 delete-删除)
insert into 命令 用来 添加,修改表记录
insert into 表名 values(值列表); //插入表记录
insert into 表名 values(值列表),(值列表); //添加多条记录
insert into 表名(字段值列表) values(字段值列表); //指定字段赋值
insert into 表名(字段值列表) values(值列表),(值列表); //给多个指定字段赋值
update 命令 用来更新表记录
update 表名 set 字段=值,字段=值,.. where 条件表达式;
//修改表记录(全部更新或者可以选择符合条件的记录)
delete from 命令 用来删除表记录
delete from 表名 where 条件表达式; //删除表记录(全部删除或者仅删除符合条件的)
DCL 数据控制语言 (grant-赋予 revoke-撤销)
grant 命令 用来赋予用户权限
grant 权限列表 on 库名.表名 to 用户名@“客户端地址” identified by “密码” [with grant option]
// 授权给某个用户,通过哪个主机和密码 [是否有授权权限] 登录
注:当库名.表名 为*.* 匹配所有库表
all/usage:所有权限/无权限
部分:select-查 update(字段1,字段2..)-更新 insert-插入
客户端地址: %-匹配所有主机 192.168.1.%-某个网段 单个主机
revoke 命令 撤销用户权限
revoke 权限列表 on 库名.表名 from 用户名@“客户端地址”;
//撤销用户某些权限(insert,select,index,create,grant option,delete,drop,reload,alter等)
注意,此命令不能删除用户
delete from mysql.user where user=“用户名”; //删除某用户
flush privileges; //必须刷新才能生效
drop user 用户名@“客户端地址” //直接删除用户,对应权限也相应删除
DTL 数据事务语言 (commit-提交 rollback-回滚 savepoint-保存点)
常用操作指令
show 命令 查看库,表,索引,用户,权限等信息
show databases/tables; //查看库和表
show index from 表名 ; //查看表的索引信息
show create table 表名\G; //展示创建表的信息
show user(); //查看当前登录用户
show grants; //查看用户权限
show master status; //查看当前正在使用的日志文件
foreign key … references… 命令 外键操作
fireign key(表A的字段名) references 表B(字段名) on update cascade on delete cascade;
// 外键的创建,同步更新同步删除
数据的导入和导出命令
load data infile "目录名/文件名" into table 表名 fields terminated by “分隔符” lines terminated by “\n”;
//数据的导入 导入到表内可以指定分隔符和换行符
select 字段 from 表名 where 字段名=值 limit N,M into outline “目录名/文件名” fields terminated by “分隔符” lines terminated by “\n”
// 数据导出的限定条件where,limit(限定行数,默认初始为0,查询第N+1行,并显示前M行),换行符,分隔符...可以不需要指定。
select 命令 基本查询库,表,记录
select database(); //查看当前库
select user(); //查看当前用户
select 字段1,..,字段N from 表名 where 条件表达式;
//查询表记录,条件可以选择添加,使用*匹配所有字段
select 命令 处理查询相应结果
select count/max/min/sum/avg(字段名),字段名 from 表名 where 条件表达式 ;
//统计个数/最大/最小值/和/平均值
select 字段 from 表名 order by 字段名 [asc|desc];
//查询结果排序
select 字段 from 表名 group by 字段名 having 条件表达式;
//结果分组并按照条件过滤
select 字段 from 表名 where 条件 having 条件表达式;
//对查询结果过滤
select 命令 多表查询
select 字段名列表 from 表A,表B where 条件;
//多表查询,可以按照条件,不过查询的结果为表A × 表 B 的总记录数 这个也叫笛卡尔集
select 字段名列表 from 表名 where 条件(select 字段名列表 from 表名 where 条件);
//把内层查询结果作为外层查询的条件
select 字段名列表 from 表1 left/right join 表2 on 条件表达式 ;
//左/右链接查询,左链接以表1为主,右链接以表2 为主