写在前面

MySQL 是个神奇的关系型数据库,真心感觉牛逼,因为做的项目比较杂,之前也碰到过 Oracle 数据库,给我的印象是 Oracle 很臃肿繁琐,配置多,如果是小项目用它的话感觉就像是杀鸡用牛刀,大材小用。但是也不是说Mysql不能用于大项目,MySQL 开元免费,是现在关系型数据库的主流产品,网上相应的文档和问题解决方案也会很多,意思就是比如菜鸟如我碰到了Mysql出的问题,网上基本上很全。

系统环境 Debain 7
Mysql 5.6

1.MySQL 简单操作命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//1.登录mysql,括号中的为可选项,$(包括$)后面为实际数据,-D是指定数据库登录
mysql (-h$host) (-P$port) -u$user -p$pwd (-D$dbname) //地址 端口 账号 密码 数据库名

//2.删除、创建数据库
drop database dbname; //删除数据库
create database dbname charset utf8 //创建数据库

//3.删除、创建数据库表
drop table tablename;//删除表
create table tablename(id int, name varchar(80)); //创建表

//4.表操作
show triggers\g / show triggers; //查看触发器
show variables like 'character_set_database'; //查看库编码
desc tablename; //查看表结构
select current_date(); //查看表创建时间

//5.导入sql文件
use dbname;source /dbname.sql; //执行 sql 文件

//6.当前的连接情况
select current_user(); //查看当前登录账号
show processlist; //查看当前进程
show full processlist;//查看当前全部进程
select user,host,Super_priv from mysql.user; //查看所有可连接用户、地址和权限信息
(Super_priv 用户有super权限才可以导入数据)
grant all privileges on *.* to root@'%' identified by 'root' with grant option;flush privileges; //给root用户远程登录的所有权限

2.自动导入sql文件

2.1 shell操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#创建 createDb.sh,内容如下:

#!/bin/bash
#通过 shell 自动初始化数据库和表结构
host=$1 #地址
port=$2 #端口
user=$3 #账号
pwd=$4 #密码
dbname=$5 #数据库名
path=$6 #sql 文件路径

mysql -h$host -P$port -u$user -p$pwd <<EOF

drop database if exists $dbname;create database $dbname charset utf8;

use $dbname;

source $path

COMMIT;
EOF

#查看 shell 的执行过程命令
sh -x ./shell //查看 shell 执行过程

2.2 expect操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/expect -f

set timeout 10
set host [lindex $argv 0]
set port [lindex $argv 1]
set user [lindex $argv 2]
set pwd [lindex $argv 3]
set dbname [lindex $argv 4]
set path [lindex $argv 5]
set cset [lindex $argv 6] #字符编码

spawn mysql -h$host -P$port -u$user -p
expect "Enter password: "
send "$pwd\r"

expect "mysql> "
send "drop database if exists $dbname;create database $dbname charset $cset;\r"

expect "mysql> "
send "use $dbname;\r"

expect "mysql> "
send "source $path;\r"

expect "mysql> "
send "exit\r"

interact

回头研究再更新操作,有哪里写的不对的也请不吝赐教