MySQL 常用操作
一、更改 root 密码
1. 添加mysql到环境变量中去
vim /etc/profile
添加export PATH=$PATH:/usr/local/mysql/bin
source /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``insert
,db1
的所有表,来源IP:192.168.133.1,密码:passwd)grant all on db1.* to 'user3'@'%' identified by 'passwd';
// user3 权限(所有操作权限,db1库的所有表,所有终端,密码:passwd
2. 查看用户授权
show grants;
查看当前用户的授权show grants for [email protected];
查询特定用户的授权,可用于复制用户
五、常用 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