MySQL 常用命令集
1.mysqlbinlog工具使用方法如下:
先使用 show binary logs 查看
在使用导出命令
mysqlbinlog -R -uroot -pxxxx -hxxx.xxx.xxx.xxx -d db_name --base64-output=decode-rows --start-datetime='2015-08-13 13:11:21' --stop-datetime="2015-08-13 13:18:21" mysql-bin.000008 > mysql-bin.ran_trade_08_13.sql
2.mysqldump使用方法如下:
# 备份单个数据库 mysqldump --skip-opt -u 用户名 -p 数据库名 > /tmp/bak.sql # 备份指定库指定表(可以多表) mysqldump --skip-opt -t 数据库名 --tables table_1 table2 -u roots -p > /tmp/bak.sql # 备份所有数据库 mysqldump --skip-opt -u用户名 -p --all-databases > /tmp/bak.sql # 备份单个数据库排除某个表 mysqldump --skip-opt -u 用户名 -p 数据库名 -ignore-table=数据库名.表名 > /tmp/bak.sql
切记一定要加上 --skip-opt 避免锁表
3.修改root账户密码
mysqladmin -u root password "new password"
4.为特定用户赋予和收回权限
#赋予权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; GRANT select,insert,update,delete ON *.* TO 'pig'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES; #收回权限 REVOKE ALL PRIVILEGES ON *.* FROM pig; FLUSH PRIVILEGES;
PS: 权限包括 select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file
5.Mysql服务器开启远程连接
1)开启对应账号的远程访问权限
$ mysql -uroot -p mysql > use mysql; mysql > update user set host = '%' where user = 'root'; mysql > flush privileges;
如果在执行update的时候报错 "ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'", 解决办法
SELECT Host,User from user \G;
将重复的删除掉
2)开启服务允许远程连接 编辑文件 /etc/mysql/my.conf
$ vim /etc/mysql/my.conf #找到bind-address注释掉这行 $ /etc/init.d/mysql restart #重启mysql服务
6.新建数据库用户
CREATE USER 'pig'@'%' IDENTIFIED BY '123456'; CREATE USER 'pig'@'localhost' IDENTIFIED BY '123456';
7.查看表的大小
SELECT TABLE_NAME,( (DATA_LENGTH+INDEX_LENGTH)/1024/1024 ) as tb_szie,TABLE_ROWS FROM information_schema.TABLES WHERE TABLE_SCHEMA='db_name' order by tb_szie desc;
8. 修改数据库默认时间
最近发现数据库有个字段的时间是晚8个小时的,发现数据库的时间不对
更改mysql的配置文件(mysql.cnf) 在my.cnf的 [mysqld]区域中加上 default-time_zone = '+8:00' #此为北京时
9.重置root密码
当忘记root账号密码时,不要急,在 /etc/mysql/my.cnf 的[mysqld]下面增加一段
skip-grant-tables
然后 重启服务
sudo /etc/init.d/mysql restart
然后直接输入mysql 命令进去