mysql基础命令
**> show databases; # 查看库
>
> show tables; # 查看表
>
> use 库名 # 进入库
>
> select database(); # 查看当前所在库
>
> select * from 表名; # 查看表内所有内容
>
> select 字段名,字段名 from 表名 where 条件 #多字段有条件的查询
>
> desc 表名; # 查看表结构
>
> show create table|database 表名|库名 ;# 查看创建库或者表的详细信息
>
> create table 表名(字段名1 数据类型 约束,字段名2 数据类型 约束); # 创建数据表
>
> insert into 表名(字段名1,字段名2) values(值1,值2) #插入数据
>
> insert into 表名 values(值1,值2) #插入数据,当前标准只有2个字段
>
> delete from 表名 where 字段名=值 # 删除字段名称对应的值 不加where默认删除整张表内容
>
> drop database 库名 # 删除数据库 跑路必备技能
>
> drop table 表名 # 删除数据表
>
> alter table 表名 add 列名 约束 after 位置 # 添加一列
>
> alter table 表名 drop 列名 # 删除某列
>
> alter table 表名 modify 字段名 约束 #修改字段约束
>
> alter table 表名 change 字段名 新字段名 约束 #修改字段
>
> rename table 旧表名 to 新表名 # 修改表名
>
> create table tt(select name from t1); # 复制表**
#权限管理
创建用户
方法一:CREATE USER语句创建
mysql> create user tom@'localhost' identified by 'qf@123'; #创建用户为tom,并设置密码。
mysql> FLUSH PRIVILEGES; #更新授权表
注:
identified by :设置密码
在用户tom@' ' 这里 选择:
%:允许远程登陆。也可以指定某个ip,允许某个ip登陆。也可以是一个网段。
%:包括所有的主机,不包括本机(127.0.0.1),但是不包括(localhost)
==客户端主机 % 所有主机
192.168.246.% 192.168.246.0网段的所有主机
192.168.246.252 指定主机
localhost 指定主机
修改成远程登录:
将localhost修改成ip地址或者%
> use mysql
> update user set host = '10.3.134.%' where user = 'root';
> flush privileges
GRANT语句创建 ---授权。
mysql> GRANT ALL ON *.* TO 'user3'@’localhost’ IDENTIFIED BY 'Qf@123';
#权限 库名.表名 账户名 设置密码
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
查看权限
1.查看自己的权限
> show grants\G
2.查看别人的权限
> show grant for root@'localhost'\G
修改密码
更改自己的密码
方法一:
# mysqladmin -uroot -p'old_password' password 'new_password'
方法二:
mysql>SET PASSWORD='new_password';
更改其他用户的密码
> use mysql
> SET PASSWORD FOR user3@'localhost'='new_password'
删除用户
方法一:DROP USER语句删除
DROP USER 'user3'@'localhost';
方法二:DELETE语句删除
DELETE FROM mysql.user WHERE user='tom' AND host='localhost';
更新授权表: FLUSH PRIVILEGES;
数据的备份
备份: 能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方。**
**冗余: 数据有多份冗余,但不等备份,只能防止机械故障还来的数据丢失,例如主备模式、数据库集群。**
备份时还要考虑**数据的一致性**和**服务的可用性**
**一、逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库,效率相对较低。**
**二、物理备份: 直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。**
1.完全备份-----完整备份:
每次都将所有数据(不管自第一次备份以来有没有修改过),进行一次完整的复制.
特点:占用空间大,备份速度慢,但恢复时一次恢复到位,恢复速度快。
2.增量备份: 每次备份上一次备份到现在产生的新数据
特点:因每次仅备份自上一次备份(注意是上一次,不是第一次)以来有变化的文件,所 以备份体积小,备份速度快,但是恢复的时候,需要按备份时间顺序,逐个备份版本进行恢 复,恢复时间长。
3.差异备份:只备份跟完整备份不一样的
在第一次完整备份之后,第二次开始每次都将所有文件与第一次完整备份的文件做比较,把自第一次完整备份以来所有修改过的文件进行备份,且以后每次备份都是和第一次完整备份进行比较(注意是第一次,不是上一次),备份自第一次完整备份以来所有的修改过的文件。
特点:占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后一次的差异版本,恢复速度介于完整备份和增量备份之间。
主从复制
1、主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。
2、主从复制的作用
1.做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
2.架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
3.读写分离,使数据库能支撑更大的并发。
1--在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;(主库写,从库读,降压)
2--在从服务器进行备份,避免备份期间影响主服务器服务;(确保数据安全)
3、主从复制的原理
原理:
实现整个主从复制,需要由主服务器上的IO进程,和从服务器上的Sql进程和IO进程共同完成.
要实现主从复制,首先必须打开主服务器端的binary log(bin-log)功能,因为整个MySQL 复制过程实际上就是从服务器端从主服务器端获取相应的二进制日志,然后再在自己slave端完全顺序的执行日志中所记录的各种操作。
===========================================
1. 在主库上把数据更改(DDL DML DCL)记录到二进制日志(Binary Log)中。
2. 备库I/O线程将主库上的日志复制到自己的中继日志(Relay Log)中。
3. 备库SQL线程读取中继日志中的事件,将其重放到备库数据库之上。
============
master 负责写 -----A
slave relay-log -----B
I/o 负责通信读取binlog日志
SQL 负责写数据
加深巩固,更加详细的mysql数据库,请戳这里:
mysql详解