mysql之常用的命令行操作
mysql之常用的命令行操作
- 1.连接进入命令行
- 2.数据库用户管理
- 3.数据库的库、表信息管理
- 4.数据导出备份与导入还原
- 4.1.`mysqldump`:导出备份数据
- 4.2.select语句导出
- 4.3.mysql命令导入
- 4.4.source导入
- 4.5.load data导入数据
在实际工作中部署系统时,出于安全的考虑往往并不能直接通过数据库图形管理工具去连接访问,当这种情况时我通常是将系统的初始化sql文件上传到mysql主机,然后通过连接进入命令行的方式来执行sql文件;因此,记录整理mysql命令行常用的相关操作;
1.连接进入命令行
mysql
功能:输入该命令可以进入到命令行,他有很多参数;
常用参数:
-u
:用来指定连接时的,用户名
-p
:用来指定连接时的,密码
-h
:用来指定连接时的,mysql主机名、IP
-P
:用来指定连接时的,mysql端口
-D
:用来指定连接时的,数据库db
-V
:用来查看mysql版本号
格式:
mysql -u用户名 -p密码
或
mysql -u用户名 -p
mysql -u用户名 -p密码 -h ip -P 端口 -D 数据库db
或
mysql -u用户名 -p -h ip -P 端口 -D 数据库db
示例1:普通的连接
方式一:直接-p后面跟密码
msyql -uroot -p123456
方式二:直接-p后面不跟密码,弹出输入密码项
msyql -uroot -p
示例2:连接时指定ip、端口、数据库
msyql -uroot -p123456 -h 192.168.12.123 -P 3306 -D dbname
或
msyql -uroot -p -h 192.168.12.123 -P 3306 -D dbname
示例3:查看版本号
mysql -V
2.数据库用户管理
1.创建用户
test:是用户名;
%:用户可以从哪些主机连接mysql;
123456:是设置用户名的连接密码;
create user 'test'@'%' identified by 'Aa.123456';
host参数说明:
- 指定的ip地址,用户只能从指定的ip连接mysql;如:192.168.1.123;
- 通配符%,用户可以从任何主机连接到数据库;
- 指定的主机明,用户只能从指定的主机名连接到mysql;
2.授权
参数说明:
test123:指定搜去的数据库名称
test:是用户名;
%:用户可以从哪些主机连接mysql;
grant all privileges on test123 to 'test'@'%';
3.刷新权限
flush privileges;
4.查看用户权限
show grants for 'test'@'%';
5.修改密码
alter user 'test'@'%' identified by 'AAa.123456';
6.删除用户
drop user 'username'@'host';
3.数据库的库、表信息管理
注意:使用以下命令的前提是,已经连接进入到了mysql命令行中
1.列出所有的数据库列表:
show databases;
2.选择、切换数据库
use dbname;
3.列出当前选定的数据库中的所有表名
show tables;
4.列出指定表的结构
desc tableName;
5.查看指定表的索引
show index from tableName;
6.查看指定表的创建语句、sql
show create table tableName;
7.创建数据库
create database dbName;
4.数据导出备份与导入还原
4.1.mysqldump
:导出备份数据
参数说明
-u
: 指定 MySQL 用户名;
-p
:指定密码;
-h
: 指定主机名;
test: 是要导出的数据库名称;
test_backup.sql: 导出数据保存到的文件;
功能:整库导出
mysqldump -uroot -p123456 test > test_backup.sql
或
mysqldump -uroot -p password -h hostname database_name > output_file.sql
功能:导出指定表
说明
test:数据库名称;
sms_groupsend:需要导出的表名;
backup1.sql:导出后的文件;
mysqldump -uroot -p123456 test sms_groupsend > backup1.sql
或
mysqldump -uroot -p123456 -h 127.0.0.1 test sms_groupsend > backup2.sql
功能:只导出数据库结构
导出整个库的结构:
mysqldump -uroot -p123456 -h 127.0.0.1 --no-data test > test1.sql
导出指定表的结构:
mysqldump -uroot -p123456 -h 127.0.0.1 --no-data test sms_groupsend > test2.sql
功能:导出所有库
mysqldump -uroot -p123456 --all-databases > database_bak.sql
4.2.select语句导出
功能:use dbname;切换到指定的数据库
后,通过查询语句导出,可导出指定表、指定表的指定字段,需要连接进入到mysql命令行后才能使用
说明:
/var/lib/mysql-files/test.csv:是导出的数据存储路径和文件
sms_groupsend:是要导出的表名
select * into outfile '/var/lib/mysql-files/test.csv' from sms_groupsend;
注意:
1.如果mysql配置了secure-file-priv变量,会限制导入/导出的路径;可以直接将数据导入/导出到设置的路径下就可避免问题;
2.使用此方法导出的只有数据,没有表结构;用导出的文件还原数据时,目标表需要已存在;
查看secure-file-priv设置:
show variables like 'secure_file_priv';
4.3.mysql命令导入
mysql -uroot -p123456 test123 < ./test.sql
或
mysql -uroot -p123456 -h 127.0.0.1 -P 3306 -D test123 < ./test.sql
注意:导入的目标库需要已存在;无需进入命令行即可执行命令;
4.4.source导入
#切换到指定的数据库
use dbname;
#source命令执行sql
source /data/test/test.sql;
注意:需要进入命令行,切换到对应的库后再执行sql文件;
4.5.load data导入数据
load data local infile '/var/lib/mysql-files/test.csv' into table sms_groupsend;
注意:需要进入命令行才能执行语句;导入的目标表结构,需已在数据库中;