Mysql 常用操作

http://blog.csdn.net/zyz511919766/article/details/22083651

http://www.cnblogs.com/fslnet/p/3143344.html

Mysql 查看连接数   查看Mysql数据库文件位置 mysql清空表内数据

1、Mysql 查看连接数

命令: show processlist;
如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。
show processlist;

可以通过获取到的相关进程ID,可以使用kill 进程ID,命令终止相关SQL语句的运行.

只列出前100条,如果想全列出请使用

show full processlist;


 

2、数据库连接池应用中数据库服务器断开超时连接的问题

查看文件/etc/my.cnf,查询有关超时配置的参数:

mysql> show variables like '%timeout'; 

mysql> show variables like '%timeout';

我们可以在属性组mysqld下面修改如下两个参数:
interactive_timeout、wait_timeout

MySQL数据库服务器配置的连接超时时间默认是8小时,如果修改的超时时间足够长的话,就不会出现连接断开的问题。但是,如果有很多应用都在使用数据库连接池,大量的数据库连接资源一直被占用,严重的话可能使数据库服务器宕机,而且,也会使一些攻击者伪造大量请求,使数据库服务器负荷过载而宕机,从而影响应用处理业务。 

3、Mysql清空表内数据那语法

TRUNCATE TABLE 表名
 

4、LINUX查看Mysql数据库文件位置

find / -name "mysql" -print
一般来说mysql是放在/usr/local/mysql/下的。
然后在其bin目录下有个mysql_config文件,vi:
ldata='/usr/local/mysql/var'

5、更改MySQL数据库的数据库名

方法1:

 use information_schema;
mysql> select table_name from tables where table_schema='数据库名1';

mysql> rename table 数据库名1.ttt to 数据库名2.ttt;

方法2:

数据库默认是采用的INNODB存储引擎,不能直接修改数据库的名称,所以现转换成MyISAM存储引擎在修改表名在转换成INNODB存储引擎就好了

show processlist; #这一步主要查看有没有其他进程连接,要保证没有其他程序操作数据库。

mysql> alter table t1 engine=MyISAM;

Query OK, 1 row affected (0.01 sec)

Records: 1 Duplicates: 0 Warnings: 0

mysql> exit

进入mysql 数据库文件夹位置,修改数据库文件夹名

[root@mysqludf var]# mv 源数据库名称  目标数据库名;

mysql> use目标数据库名;

Database changed

mysql> alter table t1 engine=INNODB;

注意,在改名之前必须现转换存储引擎,否则会报错,你想换的这个名称就换不成了,只能换另外一个名称了。 

6、配置 Mysql 允许远程连接

切换到 mysql DB 

mysql> USE mysql;  

添加一个新的 root 用户, 密码为空, 只允许 192.168.1.100 连接 

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY '' WITH GRANT OPTION;  

添加一个新的 root 用户, 密码为helloworld, 允许 任何主机连接 

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'helloworld' WITH GRANT OPTION; 

查看现有用户,密码及允许连接的主机 

mysql> SELECT User, Password, Host FROM user;

7、MySQL备份和恢复 
使用mysqldump命令导出数据库
导出整个数据库的语法格式
mysqldump -u root -p news > news.sql   (输入后会让你输入进入MySQL的密码)


只导出表的结构,用mysqldump的-d选项


mysqldump -uroot -p -d 数据库名 > 文件名.sql

如果想导出表 test1,test2,test3 的 表结构,加-d就可以了

mysqldump -uroot -p -d 数据库名 test1 test2 test3 > createtab.sql


如果想导出表 test1,test2,test3 的 表结构和数据?

只要在导入的时候不要加-d,就可以同时导入表结构和数据

 mysqldump -uroot -p 数据库名  表名1,表名2  >文件名.sql

导出存储过程的代码

默认情况下,mysqldump并不会导出数据库的存储过程和函数,如果数据库上创建了存储过程且备份是需要备份存储过程,那就需要用参数 -R 来指定,

mysqldump -uroot -p -hlocalhost -P3306 -n -d -t -R DBName > procedure_name.sql

-d 表示--no-create-db, -n表示--no-data, -t表示--no-create-info, -R表示导出function和procedure。



还原
方法一: 
建立你要还原的数据库,输入"create database 数据库名;"
切换到刚建立的数据库,输入"use 数据库名;",回车;
导入数据,输入"source 数据库名.sql;",回车,开始导入,
再次出现"mysql>"并且没有提示错误即还原成功。

方法二: 

[root@localhost mysql]# mysql -u root -p 数据库名<数据库名.sql,输入密码即可。

如何查看mysql表 ; 查看数据库show databases ;使用数据库use databases; 查看表 show tables: 看表结构describe table; 

8、更改MySQL数据库目录位置
 
MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把MySQL目录移到/home/data下需要进行下面几步:
  1、home目录下建立data目录
  cd /home
  mkdir data
  2、把MySQL服务进程停掉:
  mysqladmin -u root -p shutdown
  3、把/var/lib/mysql整个目录移到/home/data
  mv /var/lib/mysql /home/data/
  这样就把MySQL的数据文件移动到了/home/data/mysql下
  4、找到my.cnf配置文件
  如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:
  [root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
  5、编辑MySQL的配置文件/etc/my.cnf
  为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。修改

socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:/home/mysql/mysql.sock 。操作如下:
  vi  my.cnf    (用vi工具编辑my.cnf文件,找到下列数据修改之)
 [mysql d]
socket=/var/lib/mysql .sock
[mysql ]
socket=/tmp/mysql .sock
  6、修改MySQL启动脚本/etc/init.d/mysql
  最后,需要修改MySQL启动脚本/etc/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:/home/data/mysql。
  [root@test1 etc]# vi /etc/init.d/mysql
  #datadir=/var/lib/mysql    (注释此行)
  datadir=/home/data/mysql   (加上此行)
  7、重新启动MySQL服务
  /etc/init.d/mysql start
  或用reboot命令重启Linux
  如果工作正常移动就成功了,否则对照前面的7步再检查一下。
  还要注意目录的属主和权限。
 代码:
[root@sample ~]# chown -R mysql:mysql /home/data/mysql/  ← 改变数据库的归属为mysql

[root@sample ~]# chmod 700 /home/data/mysql/test/  ← 改变数据库目录属性为700

[root@sample ~]# chmod 660 /home/data/mysql/test/*  ← 改变数据库中数据的属性为660

 9、mysql错误:Table XXX is marked as crashed and should be repaired


myisamchk -f xxxx/*.MYI

mysqlcheck -aro xxxx -uusername -ppassword

% myisamchk --recover --quick /path/to/tblName
% myisamchk --recover /path/to/tblName
% myisamchk --safe-recover /path/to/tblName

第一种是最快的,用来修复最普通的问题;而最后一种是最慢的,用来修复一些其它方法所不能修复的问题    

10、mysql 用户管理和权限设置

用户管理
mysql>use mysql;
查看
mysql> select host,user,password from user ;
创建
mysql> create user  zx_root   IDENTIFIED by 'xxxxx';   //identified by 会将纯文本密码加密作为散列值存储
修改
mysql>rename   user  feng  to   newuser;//mysql 5之后可以使用,之前需要使用update 更新user表
删除
mysql>drop user newuser;   //mysql5之前删除用户时必须先使用revoke 删除用户权限,然后删除用户,mysql5之后drop 命令可以删除用户的同时删除用户的相关权限
更改密码
mysql> set password for zx_root =password('xxxxxx');
 mysql> update  mysql.user  set  password=password('xxxx')  where user='otheruser'
查看用户权限
mysql> show grants for zx_root;
赋予权限
mysql> grant select on dmc_db.*  to zx_root;
回收权限
mysql> revoke  select on dmc_db.*  from  zx_root;  //如果权限不存在会报错
 
上面的命令也可使用多个权限同时赋予和回收,权限之间使用逗号分隔
mysql> grant select,update,delete  ,insert  on dmc_db.*  to  zx_root;
如果想立即看到结果使用
flush  privileges ;
命令更新 
 
设置权限时必须给出一下信息
1,要授予的权限
2,被授予访问权限的数据库或表
3,用户名
grant和revoke可以在几个层次上控制访问权限
1,整个服务器,使用 grant ALL  和revoke  ALL
2,整个数据库,使用on  database.*
3,特点表,使用on  database.table
4,特定的列
5,特定的存储过程
 
user表中host列的值的意义
%              匹配所有主机
localhost    localhost不会被解析成IP地址,直接通过UNIXsocket连接
127.0.0.1      会通过TCP/IP协议连接,并且只能在本机访问;
::1                 ::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1
 
 
grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。


grant select on testdb.* to common_user@’%’


grant insert on testdb.* to common_user@’%’


grant update on testdb.* to common_user@’%’


grant delete on testdb.* to common_user@’%’


或者,用一条 MySQL 命令来替代:


grant select, insert, update, delete on testdb.* to common_user@’%’
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

福海鑫森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值