mysql
13.1设置更改root密码
1、以root用户登录mysql
· /usr/local/mysql/bin/mysql -uroot #需使用绝对路径,因该路径并不在环境变量PATH中,可以更改环境变量PATH,增加mysql命令的绝对路径到PATH中:export PATH=$PATH:/usr/local/mysql/bin,若想使变量永久生效,需要将该命令放到/etc/profile下,并执行:source /etc/profile使修改生效,之后可直接使用命令:mysql -uroot
· mysqladmin -uroot password '123456' #给mysql的root用户设置密码
· mysql -uroot -p #加上“-p”选项,回车,输入密码后登录,或者直接“-p”后面接密码:mysql -uroot -p123456
· mysqladmin -uroot -p'123456' password'test456' #密码重置
2、如果不知道mysql的root用户密码,可编辑/etc/my.cnf文件,在[mysqld]下增加“skip-grant”,表示忽略授权,即不用用户名和密码可直接登录
· /etc/init.d/mysqld restart #改完/etc/my.cnf文件后重启mysql服务才可生效
· mysql -uroot #此时无需输入密码可直接登录
· use mysql; #登录mysql后切换到mysql库(命令行前缀“mysql>”)
· update user set password=password('aminglinux')where user='root'; #前一个“password”即密码,后一个“password”为函数,括号中即为真正的密码,改完后,将之前/etc/my.cnf文件中添加的“skip-grant”注释掉
· /etc/init.d/mysqld restart #重启mysql服务
13.2 连接MySQL
· mysql -uroot -p123456 #连接本机的MySQL
· mysql -uroot -p123456 -h127.0.0.1-P3306 #远程连接MySQL,在A机器上远程连接B机器上的MySQL,需要输入B机器的IP和Mysql服务的端口号
· mysql -uroot -p123456-S/tmp/mysql.sock #mysql进程不仅监听3306端口,也监听了一个socket,此时可通过该socket连接MySQL,只适合本机
· mysql -uroot -p123456 -e “showdatabases” #加“-e”选项,接连接MySQL后的一些操作命令,列出所有database
13.3 mysql常用命令
· 切换到mysql库: use mysql; #该命令可不用分号
· 查看库里的表: show tables;
· 查看表里的字段:desc tb_name;
· 查看建表语句:show create table tb_name\G #“\G”表示竖排显示,加“\G”后,就不用加分号了,因它本身就是一个结束符号,若加了分号后,mysql以为又敲了另外一个命令,而另外一个命令是空,就会报ERROR
· 查看当前用户: select user();
· 查看当前使用的数据库:select databsase();
· 创建库: create database db1; 切换到db1库:use db1;
· 创建表,同时定义表的字段“id”和“name”:createtable t1(`id` int(4), `name` char(40));
· 查看当前数据库版本: select version();
· 查看数据库状态:show status;
· 查看各参数: show variables; show variables like 'max_connect%';
· 修改参数:set global max_connect_errors=1000;
· 查看队列: show processlist; show full processlist;
13.4 mysql用户管理
· grant all on *.* to 'user1' identified by'123456'; #登录mysql后,创建user1用户并授权,“all”代表所有的权限,比如SELECT、INSERT、DROP等,第一个“*”代表所有的库,后面的“.*”代表所有的表,合起来即是所有库的所有的表,用户的密码为“123456”,创建用户后若以该用户登录,则需要指定“-h127.0.0.1”,因默认是socket连接的,命令:grant all on *.* to 'user1' @'localhost' identified by '123456'; 创建对应socket可直接登录
· grant SELECT,UPDATE,INSERT on db1.* to'user2'@'127.0.0.1' identified by 'passwd'; #创建用户user2,授予指定的权限,针对db1库的所有表,并指定客户端IP,即该用户只能通过指定的IP(来源IP)登录服务器
·
· grant all on db1.* to 'user3'@'%'identified by 'passwd'; #创建用户user3,赋予所有权限,针对db1库的所有表,来源IP为所有IP,“%”代表通配所有IP
· show grants; #查看当前登录用户的授权
· show grants for user2@192.168.133.1; #查看指定用户的授权,若同样的用户及权限要增加另一个IP,使之可以从该IP登录,直接复制命令的两行结果,修改IP并运行即可
13.5 常用sql语句
· select count(*) from mysql.user; #查看mysql库的user表的行数,在当前库下也可查询其它库的表的相关数据
· select * from mysql.db\G; #查看mysql库的user表的所有内容
· select db from mysql.db; #查看mysql库的user表的db字段
· select db,user from mysql.db; #查看mysql库的user表的db字段和user字段
· select * from mysql.db where host like'192.168.%\G'; #模糊查询
· insert into db1.t1 values (1, 'abc'); #给db1库的t1表插入字段值
· delete from db1.t1 where id=1; #删除字段中id=1的所在字段
· update db1.t1 set name='aaa' whereid=1; #更改字段值
· truncate table db1.t1; #清空表t1的内容,命令:“descdb1.t1;”查看,表结构还存在,仅仅是内容被清空
· drop table db1.t1; #删除表的内容,包括表的结构
· drop database db1; #删除数据库db1
13.6 MySQL数据库的备份与恢复
· 备份库: mysqldump -uroot -p123456 mysql > /tmp/mysql.sql #备份mysql库
· 恢复库: mysql -uroot -p123456 mysql < /tmp/mysql.sql
· 备份表: mysqldump -uroot -p123456 mysql user > /tmp/user.sql #把mysql库里的user表备份
· 恢复表: mysql -uroot -p123456 mysql < /tmp/user.sql #恢复表只需指定库名即可,无需指定表名
· 备份所有数据库: mysqldump -uroot -p123456 -A >/tmp/123.sql
· 只备份表结构,不备份数据: mysqldump -uroot -p123456 -d mysql > /tmp/mysql.sql