三、Mysql命令操作(插入、删除、更新)
#mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
Mysql导出数据库一个表
# mysqldump -u 用户名-p数据库名 表名>导出的文件名
#mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
Mysql导出一个数据库结构
#mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:wcnc_db.sql
// -d 没有数据--add-drop-table在每个create语句之前增加一个drop table
限制导出条件,不导出表结构,只导出数据
Mysql > use search;
Mysql >select * from表名where lat!=0 into outfile“xxx.sql”
// 将lat字段不为0的数据全部导出
Msyql >select * from map_drug_store where id>120000 into outfile 'map_drug_store_3.xls';
//限制id>120000的导出到xxx.xls
Mysqldump限制导出条件
Mysql >/usr/local/mysql/bin/mysqldump -uroot -p search drug_new1 --where="id=39615" > /home/sum/drug_new1.sql
或
Mysql >/usr/local/mysql/bin/mysqldump -uroot -p search drug_new1 -w"id=39622" > /home/sum/drug_new_2.sql
只导出数据结构
# mysqldump --opt -d 数据库名-u root -p >xxx.sql
//只导出数据结构,不导出数据
六、数据库导入
source 命令导入
Mysql > use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql> create database xxx;
mysql> use xxx;
mysql>source/home/sum/wcnc_db.sql
另一种方法导入数据库及表
#/usr/local/mysql/bin/mysql -uroot -padmin cms_xyxy
导入数据库中的某个表
#/usr/local/mysql/bin/mysql -uroot -pmimacms_xyxy
将一个文件中的数据导入
Mysql > use 库名;
Mysql > load data infile '/www/drug/search/xysswy0807.txt' into table 表名;
导入时指定字符串
Mysql >/usr/local/mysql/bin/mysql --default-character-set=gbk -uroot -padmin ixywy
七、数据库导入导出举例
数据导出
# mysql -uroot –p
>use vpopmail;
>select pw_name,pw_name,pw_passwd,pw_dir,pw_dir,pw_domain into outfile 'mailuser.sql' from vpopmail;
>exit;
在新服务器将数据导入
Mysql>LOAD DATA INFILE '/home/mailboxusers.sql' INTO TABLE mailbox FIELDS TERMINATED BY ',' (username,uid,password,maildir,homedir,domain);
//只导入上面username,uid..等几个字段的数据
八、找回Mysql密码
忘记mysql的root密码
1、kill掉系统里的MySQL进程(千万不敢用下面的方式关闭,你会发现你的数据表损坏):
#killall -TERM mysqld(错误)
#service mysql stop(正确)
2、用以下命令启动MySQL,以不检查权限的方式启动:
#/usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
3、然后用空密码方式使用root用户登录MySQL:
#/usr/local/mysql/bin/mysql -uroot –p
4. 修改root用户的密码;
mysql> update mysql.user set password=password("123456") where user="root";
mysql> flush privileges;
mysql> quit
5、以正常方式启动mysql
# ./mysqld_safe–user=mysql &
修改root用户密码(双条件匹配)
update mysql.user set password=password("123456") where user="root" and host="localhost";
> flush privileges;//更新语句
九、Mysql配置查看及修改
查看数据库最大连接数
# cd /usr/local/mysql/bin
# ./mysqladmin -uroot -p variables | find "max_connect"
设置新的最大连接数为200
mysql> set GLOBAL max_connections=200;
显示数据库当前连接数
Mysql> show processlist
Mysql查看数据存储引擎
#show create table userid;
显示当前状态
mysql > show status
或者
# mysqladmin -uroot -p status
mysql远程连接命令
如两台服务器70、71,使71服务器的mysql能远程连接70mysql的ypk数据库
1、在70数据库添加wyj用户
mysql >grant all on ypk.* to wyj@219.232.241.71 identified by 'wyj123' with grant option;
mysql >flush privileges;
2、在71服务器上远程连接测试
# cd /usr/local/mysql/bin
#./mysql -h219.232.241.70 -uwyj –p
输入密码即可登陆70数据库。
查看数据库里当前数据文件的存放路径
mysql> show variables like '%dir%';
+----------------------------+----------------------------+| Variable_name | Value |+----------------------------+----------------------------+| basedir | / || character_sets_dir | /usr/share/mysql/charsets/ || datadir | /data/mysql/ || innodb_data_home_dir | || innodb_log_arch_dir | || innodb_log_group_home_dir | ./ || innodb_max_dirty_pages_pct | 90 || slave_load_tmpdir | /tmp/ || tmpdir | /tmp/ |+----------------------------+----------------------------+
创建表
mysql> create table dede_login_db(
-> id INT(10) NOT NULL AUTO_INCREMENT primary key,
-> text VARCHAR(255) NOT NULL,
-> link VARCHAR(255) NOT NULL
-> );
//AUTO_INCREMENT自动增长
十、Mysql慢查询日志
1、慢日志配置
进入mysql查看全局变量
mysql> show GLOBAL VARIABLES;
……
| log | OFF |
| log_bin |ON |
| log_bin_trust_function_creators| OFF |
| log_error| |
| log_queries_not_using_indexes| OFF |
| log_slave_updates| OFF |
| log_slow_queries| ON |
| log_warnings | 1 |
| long_query_time | 1 |
#SQL查询超时设置
long_query_time =1
#慢日志的文件位置
log_slow_queries=/usr /local/mysql/data/host-slow.log
#记录下没有加索引的SQL查询语句
log_queries_not_using_indexes
log-queries-not-using-indexes=1 //记录没有使用索引的sql
查看以上变量后,在配置文件中添加:
# vi /etc/my.conf
log_slow_querie=/usr/local/mysql/data/log-slow-queries.log
long_query_time=1
重启mysql服务
#./mysqld_safe --defaults-file=/etc/my.cnf &
注:有的时候重启mysql,并不生成slow.log日志,需制定配置文件,启动方法如上。
2、慢日志查询方法
# /usr/local/mysql/bin/mysqldumpslow -s c -t 20 host-slow.log
//访问次数最多的20个sql语句
# /usr/local/mysql/bin/mysqldumpslow -sr-t 20 host-slow.log
//返回记录集最多的20个sql
#mysqldumpslow -t 10 -s t -g “left join” host-slow.log
//按照时间返回前10条里面含有左连接”left join”的sql语句
删除记录
delete from domain(表名)where domain(字段名)= 'sum.com';
插入数据
insert into mailbox (username,uid,password,maildir,homedir,domain) values('liw@wsn.com.cn','liw','$1$JJg9Z$zI7r0QHx3keM6rT9/u1CC0','wsn.com.cn/liw/Maildir/','wsn.com.cn/liw/','wsn.com.cn');
修改数据
update mailbox set password='$1$.V6vI$Q4kZ.DFEKHyBhfkMzz3eN.' where username='duzhuang@wsn.com.cn';
//修改username为duzhuang的用户的密码 (后面是加的条件)
UPDATE 表名SET字段名='200';
//修改一列数据的值
修改数据表名称
Mysql >ALTER TABLEtale_nameRENAME TO新表名;
四、Mysql查询操作
查看表中的数据总数
mysql>select count(*) from表名;
查看表中最后一条数据
select * from表名order by id desc limit 1;
limit 用法
mysql >select * from club_ques_dis where qintime > '2008-01-01 00:00:00' and length(qtitle)<10 limit 10,1
//从第10条开始,显示1条
数据查找
>select * from mailbox where username like "yi%";
yi开头的username
Mysql显示某字段最大值
Mysql >select max(id) from表名;
判断字段所占字符长度
Mysql> select * from表名where qintime > ‘2008-01-01’ andlength(qtitle)<3limit 1,1;
//查看qtitle字段的数据内容,长度小于3
查看表中的字段
Mysql > desc table_name;
或
Mysql > show columns from 表名from数据库名;
如:show columns from mailbox from extmail;
Mysql倒序排列id字段数据
Mysql >select * from drug_new order byiddesc limit 1;
查看表的数据结构
Mysql>show create table表名;
查看数据库进程
show processlist;
查看数据库同步
show slave status\G;