mysql常用命令总结

来源:互联网 发布:游戏源码怎么变成游戏 编辑:程序博客网 时间:2024/05/17 01:24

1、启停mysql
系统默认mysql启停:
[root@localhost ~]# /etc/init.d/mysqld start
[root@localhost ~]# /etc/init.d/mysqld stop

编译安装mysql启停:
[root@localhost ~]# /usr/local/mysql/bin/mysqld_safe --user=mysql &
[root@localhost ~]# /usr/local/mysql/bin/mysqladmin shutdown

如果编译安装后将源码包下的开机启动文件拷贝到了/etc/init.d下,也可以使用以上的启动方式。
[root@localhost mysql-5.5.23]cp support-files/mysql.server /etc/init.d/mysqld
mysqld启动脚本还有其他的功能参数:
Usage: /etc/init.d/mysqld {start|stop|status|condrestart|restart}

2、密码设置
设置初始密码:
[root@localhost ~]# mysqladmin -uroot password '111111'

清除密码:
[root@localhost ~]# mysqladmin -uroot password '' #密码为空

重置密码:
[root@localhost ~]# mysqladmin -uroot -p111111 password '222222'

登陆到mysql后修改密码:
[root@localhost ~]# mysql -uroot -p222222   #登陆
mysql> update mysql.user set password=password('333333') where user='root';
mysql> flush privileges;   #刷新权限

忘记密码后重置:
a.停止mysql
[root@localhost ~]# /etc/init.d/mysqld stop

或kill进程
[root@localhost ~]# kill -9 `ps -ef|grep mysql|grep -v grep|awk '{print $2}'`

2.使用--skip-grant参数启动mysql
[root@localhost ~]# mysqld_safe --skip-grant &

3.登陆mysql修改密码
[root@localhost ~]# mysql
mysql> update mysql.user set password=password('111111') where user='root';
mysql> flush privileges;

4)重启mysql
[root@localhost ~]# /etc/init.d/mysqld restart

3、连接mysql
本地连接:
[root@localhost ~]# mysql -u root -p111111

远程连接:
[root@localhost ~]# mysql -h192.168.128.10 -uroot -p111111      #-h参数后跟IP

本机也可以加-h参数:
[root@localhost ~]# mysql -h127.0.0.1 -uroot -p111111

4、用户管理
查看用户权限:
mysql> show grants for root@localhost;

授权:
mysql权限分全局级别、数据库级别、表级别、列级别,根据需要指定相应级别。

赋予root超级用户权利权限:
mysql> grant all privileges on *.* to root@'%' identified by '111111';

创建test全局权限并有授予别人的权限:
mysql> grant all privileges on *.* to test@'%' identified by '222222' with grant option;

创建test用户并赋予cacti库所有权限:
mysql> grant all privileges on cacti.* to test@'%' identified by '222222';

创建test用户并赋予cacti库某些权限:
mysql> grant select,delete,update,create,drop on cacti.* to test@'%' identified by '222222';

创建test用户并赋予cacti库host表权限:
mysql> grant all privileges on cacti.host to test@'%' identified by '222222';

撤销用户权限:
mysql> revoke all on *.* from test;
REVOKE语句只是取消用户的权限,没有彻底删除用户,如果需要,可以用delete语句删除用户。

mysql> delete from mysql.user where user='test';
mysql> flush privileges;

多条件匹配删除:
mysql> delete from mysql.user where user='test' and host='localhost';

5、备份恢复
mysqldump备份库:
[root@localhost ~]# mysqldump -u root -p111111 mysql >backup.sql

建议备份时加上参数:--lock-tables、--lock-all-tables、--single-transaction

--lock-all-tables, -x:
在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭 --single-transaction 和 --lock-tables 选项。

--lock-tables:
它和 --lock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 --single-transaction 选项。

--single-transaction:
该选项在导出数据之前提交一个 BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB。

本选项和 --lock-tables 选项是互斥的,因为 LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用 --quick 选项。

备份多个库:
[root@localhost ~]# mysqldump -u root -p111111 mysql test >backup.sql

备份所有库:
[root@localhost ~]# mysqldump -u root -p111111 --all-databases >all.sql

备份单库结构:
[root@localhost ~]# mysqldump -u root -p111111 -d mysql >backup.sql

压缩备份库:
[root@localhost ~]# mysqldump -u root -p111111 mysql | gzip >backup.sql.gz

备份表:
[root@localhost ~]# mysqldump -u root -p111111 mysql user >backup.sql

备份表结构:
[root@localhost ~]# mysqldump -u root -p111111 -d mysql user >user.sql

还原数据库:
[root@localhost ~]# mysql -u root -p111111 <backup.sql

还原压缩的数据库:
[root@localhost ~]# gunzip <backup.sql.gz |mysql -uroot -p111111 mysql

将本机mysql库拷贝至其他服务器的newdata库中:
[root@localhost ~]# mysqldump -uroot -p111111 mysql|mysql -h192.168.128.10 -uroot -p222222 -C newdata

mysqldump创建数据库的命令:
[root@Master ~]# mysqladmin create newdata