MySQL 常用操作

一、更改 root 密码

1. 添加mysql到环境变量中去

vim /etc/profile
添加
export PATH=$PATH:/usr/local/mysql/binsource /etc/profile

2. 设置mysql密码

mysql 5.6版本未生成初始密码,有初始密码的直接修改
mysqladmin -uroot password '123456' //设置root的密码123456;这里123456不填,在稍后弹出的密码输入框输入也是可以的;

3. 修改mysql密码

mysqladmin -uroot -p'123456' password '123abc'

4. 登录mysql

mysql -uroot -p //-u指定用户、-p指定密码

5. 密码重置(忘记超级用户密码)

  • 编辑 /etc/my.cnf 配置文件,[mysqld]下增加: skip-grant
  • 重启mysql服务:/etc/init.d/mysqld restart
  • 用root用户登录mysql,更新user表中的密码
    mysql -uroot
    use mysql;
    update user set password=password('aminglinux') where user='root';
  • 将配置文件中添加的skip-grant删除,重启mysql即可。

6. MySQL 有初始密码的处理

MySQL 5.7 及以后的版本root有默认密码,必须重设密码后,才能进行mysql的操作。以下是设置root密码的步骤:

  • 查看默认密码cat /root/.mysql_secret
    	# The random password set for the root userat Fri Jan 10 20:00:34 2014 (local time): aJqZsA2m
    	//这里的aJqZsA2m就是生成的随机密码
    
  • 登录MySQL mysql -u root -p
  • 更改密码 SET PASSWORD FOR 'root'@localhost = PASSWORD ('123456');

二、连接 MySQL

  • 指定用户、密码连接 mysql -uroot -p'123456'-u指定用户、-p指定密码)
  • 指定IP、端口连接 mysql -uroot -p123456 -h127.0.0.1 -P3306-h指定来源IP -P指定端口)
  • 指定socket文件连接 mysql -uroot -p123456 -S/tmp/mysql.sock-S 指定socket文件)
  • 指定登录后任务 mysql -uroot -p123456 -e "show databases"-e 指定登录后执行的命令,这只指定登录后查看库)

三、MySQL 常用命令

  • 查看当前数据库版本 select version();
  • 切换库 use mysql;(选择默认库,这里可以不用;结尾)
  • 查询库 show databases;
  • 查看库里的表 show tables;
  • 查看表里的字段 desc tb_name;
  • 查看建表语句 show create table tb_name\G;
  • 查看当前用户 select user();
  • 查看当前使用的数据库 select database();
  • 创建库 create database db1;
  • 创建表 use db1; create table t1(`id` int(4), `name` char(40));
  • 查看数据库状态 show status;
  • 查看各参数 show variables;(列出所有参数信息) show variables like 'max_connect%';(查询某个参数)
  • 修改参数 set global max_connect_errors=1000;(重启不生效,需重启生效可直接修改my.cnf)
  • 查看队列show processlist; show full processlist;(显示内容更完整)

四、MySQL 创建用户以及授权

1. 创建用户&授权

  • grant all on *.* to 'user1'@'%' identified by 'passwd';
    // all 所有操作权限,第一个 *表示所有的库,第二个*表示所有的表,user为创建的用户,%所有终端(@'%'不指定,默认%),passwd为用户密码

  • grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.133.1' identified by 'passwd';
    // user2 权限 (select``update``insertdb1的所有表,来源IP:192.168.133.1,密码:passwd)

  • grant all on db1.* to 'user3'@'%' identified by 'passwd';
    // user3 权限(所有操作权限,db1库的所有表,所有终端,密码:passwd

2. 查看用户授权

  • show grants; 查看当前用户的授权
  • show grants for user2@192.168.133.1; 查询特定用户的授权,可用于复制用户

五、常用 SQL 语句

  • 查看表的行数 select count(*) from mysql.user;(MyISAM 保存了表的具体行数、InnoDB 没有保存表的具体行数,需要逐行扫描统计,速度就会慢)
  • 查看表的所有内容 select * from mysql.db;
  • 查询表的某列内容 select db from mysql.db;(查询一列) select db,user from mysql.db;(查询多列内容,多列用,分隔)
  • 按条件查询表内容 select * from mysql.db where host like '192.168.%';
  • 表插入内容(写表) nsert 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;

六、MySQL 数据库的备份与恢复

  • 备份库 mysqldump -uroot -p123456 mysql > /tmp/mysql.sql
  • 恢复库 mysql -uroot -p123456 mysql < /tmp/mysql.sql
  • 备份表 mysqldump -uroot -p123456 mysql user > /tmp/user.sql
  • 恢复表 mysql -uroot -p123456 mysql < /tmp/user.sql
  • 备份所有库 mysqldump -uroot -p -A > /tmp/123.sql
  • 只备份表结构 mysqldump -uroot -p123456 -d mysql > /tmp/mysql.sql
04-11 07:48