fjqzyc 发表于 2018-10-3 09:14:59

mysql日常命令二

三、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 < /home/sum/cms_090610.sql
  导入数据库中的某个表
  # /usr/local/mysql/bin/mysql -uroot -pmima cms_xyxy < /home/sumiao/plastic.sql
  
  将一个文件中的数据导入
  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 < ho.sql
七、数据库导入导出举例
  数据导出
  # 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(&quot;123456&quot;) where user=&quot;root&quot;;
  mysql> flush privileges;
  mysql> quit
  5、以正常方式启动mysql
  # ./mysqld_safe –user=mysql &
  
  修改root用户密码 (双条件匹配)
  update mysql.user set password=password(&quot;123456&quot;) where user=&quot;root&quot; and host=&quot;localhost&quot;;
  > flush privileges;   //更新语句
  
九、Mysql配置查看及修改
  查看数据库最大连接数
  # cd /usr/local/mysql/bin
  # ./mysqladmin -uroot -p variables | find &quot;max_connect&quot;
  
  设置新的最大连接数为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 -s r -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 TABLE tale_name RENAME 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) select * from mailbox where username like &quot;yi%&quot;;
  yi开头的username
  
  Mysql显示某字段最大值
  Mysql > select max(id) from 表名;
  
  判断字段所占字符长度
  Mysql> select * from 表名 where qintime > ‘2008-01-01’ and length(qtitle) desc table_name;
  或
  Mysql > show columns from 表名 from 数据库名;
  如:show columns from mailbox from extmail;
  
  Mysql倒序排列id字段数据
  Mysql > select * from drug_new order by id desc limit 1;
  
  查看表的数据结构
  Mysql> show create table 表名;
  查看数据库进程
  show processlist;

    查看数据库同步
  show slave status\G;

页: [1]
查看完整版本: mysql日常命令二