linux中mysql常用操作命令详解

一、安装数据库

1 、 SQL :结构化查询语句

DML :数据操作语言
DDL :数据描述语言
DCL :数据控制语言

2 、安装方式

RPM 包: yum -y install mysql mysql-server
源码包:编译安装

3 、基本信息

主配置文件: /etc/my.cnf
端口: 3306
数据目录: /var/lib/mysql

4、启动服务

命令:service mysqld start | stop | restart

二、基本操作

1 、登录

语法:mysql -u 用户名 -p 密码 -h 服务器地址 -P 端口 -S 套接字
命令:mysql -uroot -p123 -h 192.168.203.33 -P 3306 -S/var/lib/mysql/mysql.sock
在这里插入图片描述
语法:mysql -u用户名 -p
命令:mysql -uroot -p
在这里插入图片描述

2 、创建用户

语法:create user ’ 用户名 ‘@’ 登录地址 ’ identified by ’ 密码 ‘;
命令:create user ‘qiangqiang’@’%’ identified by ‘123’;
在这里插入图片描述

3 、修改密码

管理员
mysqladmin -uroot password 密码
命令:mysqladmin -uroot password 123
在这里插入图片描述
set password=password(“123456”);
更改的是当前账户的本地连接密码,远程连接密码没有修改成功
在这里插入图片描述
功能:修改指定root账户访问地址的密码,%为远程连接
语法:set password for ‘用户名’@‘登录地址’ =password(“密码”);
命令:set password for ‘root’@’%’=password(“123456”);
在这里插入图片描述
普通用户
set password=password(“123456”);

管理员找回密码
①、关闭数据库服务:service mysqld stop
②、修改主配置文件vim /etc/my.cnf,在 mysqld 区域中添加记录
skip-grant-table
在这里插入图片描述
③、重启服务:service mysqld start
④、登录 mysql 使用命令修改密码
命令:update mysql.user set password=password(“123”) where user=“root”;
在这里插入图片描述

三、 SQL 语句

1 、增

语法:create database 数据库名称; 创建新数据库
命令:create database yunjisuan;
在这里插入图片描述
创建表
语法:create table 表名 (x1 int(3));
命令:create table student( id int(4) primary key auto_increment, name varchar(20), age int(3) );
在这里插入图片描述
向表中插入数据:
第一种:
语法:insert into 表名 ( x1 ) values (‘1’);
命令:insert into student values(null,‘qiang’,18);
在这里插入图片描述
也可以同时插入多条数据:
insert into student values(null,‘qiang’,18) ,(null,‘niu’,20) ,(null,‘tie’,17);
在这里插入图片描述
第二种:从另外一个表中导入新表中数据,保证数据结构一致
create table 表名 (
id int unsigned not null auto_increment,
name char(40) not null default ’ 未知 ’ ,
age int not null default ‘0’,
primary key (id));

insert into 表 1 ( x1 ) select x1 from 表 2;
将表 2 中的 x1 字段信息插入到表 1 中去
在这里插入图片描述

2 、删

语法:drop database 库名 ;
功能:删除数据库
命令:drop database yunjisuan;
在这里插入图片描述
语法:drop table 表名 ;
功能:删除表
命令:drop table xuesheng;
在这里插入图片描述
语法:delete from 表 where 字段 = 数值 ;
功能:删除表中字段等于数值的记录
命令:delete from xuesheng where id=2;

在这里插入图片描述

3 、改

语法:update 表名 set 字段1= 数值1 where 字段 2= 数值 2;
功能:更新表字段 2 等于数值 2 的所有字段 1 的数值为数值 1
命令:update student set age=28 where id=1;
在这里插入图片描述
语法:update 表名 set 字段 1= 数值 1 where 字段 2 between 1 and 5;
功能:更新表字段 2 在 1 到 5 之间的所有字段1 的数值为数值 1
命令:update student set age=18 where name=‘qiang’;
在这里插入图片描述

修改表结构:
语法:alter table 表 1 名 rename 表 2 名 ;
功能:将表 1 名称修改为表 2 ,修改表名称
命令:alter table student rename xuesheng;
在这里插入图片描述

语法:alter table xinxi modify age int(20);
功能:将 xinxi 表 age 字段参数修改为 int(20) ,修改表字段的类型
命令:alter table xuesheng modify age int(4);

在这里插入图片描述

语法:alter table xinxi change name username char(40) not null default ’ ';
功能:将 xinxi 表字段名 旧name 修改为新username ,修改表字段的名称
命令:alter table xuesheng change name xs_name varchar(18);
在这里插入图片描述
语法:alter table xinxi add date year;
功能:将 xinxi 表中添加一个字段
命令:alter table xuesheng add sex int(2);
在这里插入图片描述
语法:alter table 表名drop 要删除的字段;
功能:删除 xinxi 表中的 date 字段
命令: alter table xuesheng drop sex;
在这里插入图片描述
语法:alter table xinxi add date year first;
功能:将 xinxi 表中添加到第一个字段
命令:alter table xuesheng add xs_id int(4) first;
在这里插入图片描述
语法:alter table xinxi (表名)add data (新字段) year(类型) after age(旧字段);
功能:将 xinxi 表中添加一个 data 字段添加到 age 之后
命令:alter table xuesheng add sex int(2) after xs_name;
在这里插入图片描述

4 、查

show databases; 查看数据库
在这里插入图片描述
show tables; 查看数据表
在这里插入图片描述
describe或desc 表名 ; 查看表结构
在这里插入图片描述

5 、授权

命令:grant all on . to ‘zhangsan’@’%’;
功能:授权一个已存在的 zhangsan 用户允许在任何地方登陆并给予最大权限 (. 为最大权限,%表示允许远程连接)
在这里插入图片描述
grant all on . to ‘lisi’@’%’ identified by ‘123’; 创建并授权 lisi 用户允许在任何地方登陆给予最大
命令:grant all on . to “root”@“192.168.203.44” identified by “123”;
在这里插入图片描述
权限并设置密码为 123
create 、 delete 、 drop 、 select 、 all 、 grant 、 slave
show grants for ‘zhangsan’@’%’; 查看 zhangsan 用户在远程登陆的权限
在这里插入图片描述
revoke create on test.* from ‘zhangsan’@’%’; 取消 zhangsan 在远程创建使用 test 库的权限

四、数据库备份

1 、冷备份:离线执行,必须终止读写执行操作

cp scp rsync

2 、软件备份

LV lvsnap 逻辑快照
Navicat

3 、逻辑备份

① mysqldump

mysqldump :通过 sql 语句的批量操作进行数据库的导入导出
备份数据库:
功能:mysqldump 数据库名 > 备份文件名 备份数据库
命令:mysqldump -uroot -p123 yunjisuan > yunjisuan.sql
在这里插入图片描述
导入数据库:
功能:mysql 数据库名 < 备份文件 还原数据库到 test
命令:mysql -uroot -p123 test < yunjisuan.sql;
在这里插入图片描述
单独备份数据库某一张表:
语法:mysqldump 数据库名 表 1 > 备份文件名
命令:mysqldump -uroot -p yunjisuan xuesheng > xuesheng.sql;
在这里插入图片描述
将两个数据库同时备份一个文件中
功能:将数据库 1 与数据库 2 同时备份到备份文件
语法:mysqldump --databases 数据库 1 数据库 2 > 备份文件
命令:mysqldump --databases -uroot -p yunjisuan test > yjs_tst.sql
在这里插入图片描述
语法:mysqldump --all-databases > 备份文件
功能:将所有的数据库进行备份
命令:mysqldump --all-databases -uroot -p > all_databases.sql

在这里插入图片描述

② mysqlhotcopy

功能:通过正则表达式匹配 a 开头数据库进行备份
命令:mysqlhotcopy --flushlog -u=‘root’ -p=‘123’ --regexp=^xdl /root
在这里插入图片描述

③ mysqldump 与 mysqlhotcopy 区别

前者是一个 sql 语句的集合,后者是快速文件意义上的备份
前者可以使用 MyISAM 和 InnoDB 引擎,后者只适用 MyISAM
前者可以远程操作,后者只支持本地操作

猜你喜欢

转载自blog.csdn.net/guo_qiangqiang/article/details/88891637