mysql常用命令
修改路径修改密码
/usr/local/mysql/bin/mysql -uroot #进入mysql
vim /etc/profile
PATH=$PATH:/usr/local/mysql/bin #最后加上
source /etc/profile
source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。
功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句
source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
mysql -urootmysqladmin -uroot password '123456' #修改密码mysql -uroot -p'123456' #-p后面不能有空格,密码可以不带单引号,但是如果有特殊字符时会出现问题#忘记密码怎么办,有的是办法vi /etc/my.cnf[mysqld]skip-grant #忽略授权选项,平时生产中不要添加/etc/init.d/mysqld restart #这样就不用进入数据库的授权了,可以修改密码了mysql -urootuse mysql;update user set password=password('aminglinux') where user='root';flush privileges;#修改完mysql库的密码后,再次编辑/etc/my.cnf/把增加的skip-grant删掉#不删掉的话就可以不用密码进入任何库了,非常危险我们需求只是修改mysql库的密码
连接mysql
mysql -uroot -p123456#此方式只能连接本地数据库localhost,但很多时候都需要连接网络中某一个主机上的mysqlmysql -uroot -p123456 -h127.0.0.1 -P3306#-h指定远程主机的IP,-P(后面的)指定远程主机mysql的绑定端口,默认为3306mysql -uroot -p123456 -S/tmp/mysql.sock#-S:=socket,指定socket。此方法只适用于本地连接,等同于“mysql -uroot -p123456”mysql -uroot -p123456 -e “show databases”#显示所有数据库,适用于shell脚本中
mysql常用命令
库由表组成,表由字段组成查询库 show databases;切换到mysql库 use mysql;以下命令需要切换库之后执行:查看库里的表 show tables;查看表里的字段 desc tb_name;查看建表语句 show create table tb_name\G;查看当前是哪个用户 select user();查看当前使用的数据库 select database();查看所有用户 select * from user\G;创建一个新库 create database db_name;创建一个新表t1 create table t1(`id` int(4),`name` char(40));查看当前数据库版本 select version();查看mysql当前状态 show status;查看所有参数 show variables; 查看某参数 show variables like 'max_connect%';修改参数 set global max_connect_errors=1000;查看mysql进程队列 show processlist; (用的最多的地方)查看队列详细信息show full processlist;删除库 drop database db_name删除表 drop table tb_name#查看服务器队列在日常工作中最为频繁,因为它可以查看当前mysql在干什么,也可以发现是否有锁表
用户授权管理
创建一个普通用户并授权grant all on *.* to 'user1' identified by 'passwd';创建后指定登录IPgrant all on *.* to 'user1'@'127.0.0.1' identified by '123456a';#创建user1用户all表示所有的权限,并授予其所有权限“*.*”(通配符)#第一个*表示db_name(所有的数据库);第二个*表示tb_name(所有的表)#同时指定其来源IP127.0.0.1(即,只可通过此IP登录)#此处可以使用通配符%,代表所有IP(一般不使用)#设定密码:identified by用户登录:使用IP登录mysql -uuser1 -p123456 -h127.0.0.1创建后指定登录socket(这里不太清楚后面注意)grant all on *.* to 'user2'@'localhost' identified by '123456';用户的登录使用socker登录mysql -uuser2 -p'123456'#指定登录主机为localhost,所以该用户默认使用(监听)本地mysql.socket文件,不需要指定IP即可登录。
对具体权限进行授权:create database db1;#创建一个新库db1grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.133.1' identified by 'passwd';#创建user2用户,并授予其针对db1库SELECT,UPDATE,INSERT权限grant all on db1.* to 'user3'@'%' identified by 'passwd';show grants;#创建user3,并针对所有IP授予其db1库所有权限#用户和主机用@分割,主机IP用%代替表示所有主机show grants;#查询当前用户权限show grants for user2@192.168.133.1;#查看指定用户权限
常用sql语句
select count(*) from mysql.user;#查看指定库的行数,musql.user表示mysql库的user表,count(*)表示共有多少行select * from mysql.db;#查询库的所有内容select db from mysql.db;select db,user from mysql.db;#查看库指定内容,db表的所有内容select * from mysql.db where host like '192.168.%';#查看某些IP对应的库内容,like表示匹配insert into db1.t1 values (1, 'abc');#向表中插入内容update db1.t1 set name='aaa' where id=1;#更改表的某一行truncate table db1.t1;#清空一个表中内容drop table db1.t1;#删除表drop database db1;#删除库
数据备份恢复
当数据库量小的时候用可以,如果量大了就需要用其他的备份方法备份:
备份指定库 mysqldump -uroot -p123456 mysql > /tmp/mysql.sql备份所有库 mysqldump -uroot -p123456 -A > /tmp/mysql.sql恢复库 mysql -uroot -p123456 mysql < /tmp/mysql.sql备份指定表 mysql -uroot -p123456 mysql user > /tmp/user.sql只备份表结构 mysqldump -uroot -p123456 -d mysql > /tmp/mysql.sql恢复表 mysql -uroot -p123456 mysql user < /tmp/user.sql