文章目录
1. 导出test_db数据库
命令:mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u root -p test_db > test_db.sql
# 导出所有数据库
mysqldump -u root -p –all-databases > mysql_all.sql
2. 导出一个表
命令:mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u root -p test_db test1 > test_test1.sql
3. 导出一个数据库结构
mysqldump -u root -p -d --add-drop-table test_db > test.sql
4. 导入数据库
1.常用source命令
-
进入mysql数据库控制台:
mysql -u root -p
-
然后使用source命令,后面参数为脚本文件(如这里用到的.sql))
mysql>source wcnc_db.sql
2.使用mysqldump命令
mysqldump -u username -p dbname < filename.sql
3.使用mysql命令
mysql -u username -p -D dbname < filename.sql
5. mysql进入与退出
进入
mysql -uroot -p //进入mysql控制台
mysql -uroot -p password //进入mysql控制台
mysql -p //进入mysql控制台
退出
# 第一种
quit
# 第二种
exit
6. 数据库操作
1.创教数据库
命令:create database <数据库名>
mysql> create database [数据库名];
2.显示所有数据库
mysql> show databases;
3.删除数据库
mysql> drop database [数据库名];
4.连接数据库
mysql> use [数据库名];
5.查看当前使用的数据库
mysql> select database();
6.当前数据库包含的表信息
mysql> show tables;
7.查看数据库字符集
mysql> show variables like '%char%';
7. 数据表操作
1.建表
mysql> create table [表名] (
id varchar(20),
name varchar(20)
);
2.查看表结构
命令:desc 表名,或者show columns from 表名
mysql> desc test;
mysql> show columns from test;
mysql> describe test;
mysql> show create table test;
3.删除表
mysql> drop table [表名];
4.插入数据
mysql> insert into [表名] values ("001","张三");
5.查询表数据
MySQL的单表查询比较简单,比如最基本的一些操作:
# 查看表test中所有数据
mysql> select * from test;
# 查找test表中id=001内容
mysql > select * from test where id=001;
# 查找test表中已id为0开头的内容
mysql > select * from test where id like "0%";
# 查看表test中前2行数据
mysql> select * from test order by id limit 0,2;
# 或者
mysql> select * from test limit 0,2;
但是实际的场景中我们常常需要进行多表查询,复杂的业务需求也会造成连接查询也变得非常复杂,常用的多表查询方式有连接查询和子查询,但是连接查询的效率一般会比子查询高,关于连接查询可以参考下面这篇文章:
不过也有地方不建议使用连接查询,因为连接查询属于重查询,数据量大容易造成阻塞,比如阿里就明文规定禁止用三个表以上的join。做项目的时候应该遵循重业务,轻数据库的原则,能在业务层聚合,就不要用跨表查询。
6.删除表数据
命令:delete from 表名 where 表达式
mysql> delete from test where id=001;
7.修改表数据
命令:update 表名 set 字段=新值 where 表达式
mysql> update test set name='admin' where id=002;
修改表结构:
# 修改test表中name字段的长度
mysql> alter table test modify column name varchar(30);
8.在表中增加字段
命令:alter table 表名 add字段 类型 其他;
# 在表test中添加了一个字段passtest,类型为int(4),默认值为0
mysql> alter table test add passtest int(4) default '0';
9.更改表名
命令:rename table 原表名 to 新表名;
# 在表test名字更改为test1
mysql> rename table test to test1;
8. 修改密码
命令:mysqladmin -uroot -p旧密码 password 新密码
mysql> use mysql;
mysql> update mysql.user set password='新密码' where user='用户名';
mysql> flush privileges;
mysql> set password for 用户名@localhost=password('你的密码');
mysql> flush privileges;
9. 增加用户
# 增加一个test用户,密码为1234
mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
mysql> flush privileges;
10. 删除用户
# 删除test用户
mysql> delete from user where user='test' and host='localhost';
mysql> flush privileges;
11. 数据库授权
命令:grant 权限 on 数据库名.* to 用户名@localhost identified by ‘密码’;
# 授权test用户拥有test_db库的所有权限
grant all on test_db.* to test@localhost identified by '123456';
# 授权test用户拥有test_db库的select,update权限
grant select,update on test_db.* to test@localhost;
12. 锁表
# 加读锁
mysql> flush tables with read lock;
# 解锁
mysql> unlock tables;
13. 查看当前用户
mysql > select user();
14. MYSQL密码破解方法
-
先停止Mysql服务,以跳过权限方式启动,命令如下
service mysqld stop /usr/local/mysql/bin/mysqld_safe –user=mysql –skip-grant-tables &
-
在shell终端输入mysql并按Enter键,进入mysql命令行,由于MYSQL用户及密码认证信息存放在mysql库中的user表,需进入mysql库:
mysql> use mysql; mysql> update user set password=password('123456') where user='root'; mysql> flush privileges;
-
MYSQL root密码修改完,需停止以Mysql跳过权限表的启动进程,再以正常方式启动MYSQL,再次以新的密码登陆即可进入Mysql数据库
15. 存储引擎、系统版本、端口
# 查看当前使用的存储引擎
mysql > show engines;
# 查看mysql默认存储引擎
mysql> show variables like '%storage_engine%';
# 查看mysql系统版本
mysql> select version();
# 查看mysql库里所有表
mysql>show tables from mysql;
# 查看Mysql端口
mysql>show variables like 'port';
# 查看mysql库user表中user、host信息
mysql> select user,host from mysql.user;
参考资料: