安全性机制
1、创建一个用户,用户名为 jeffrey ,密码为 mypass ,主机名是 localhost:用create user 创建的新用户没有任何权限。
create user 'jeffrey' @ 'localhost' identified by 'mypass'; 若不要密码则省略 identified 部分
create user JIANG identified by 'mypass';
2、GRANT可以在创建用户时对用户授权,创建新用户testUser,密码 testpwd, 并授予用户对所有数据表的select 和update权限:
grant select ,update on *.* 'testUser'@'localhost' identifiede by 'testpwd';
3、也直接操作mysql用户表:insert into mysql.user(host,User,password,[privilegelist])
values ('host','username',PASSWORD(password),privilegevaluelist);
PASSWORD()为密码加密函数,privilegevaluelist为对应权限值,只能Y或N
3、DROP USER 'user'@'localhost';删除user在本地登录的权限
DROP USER A; 删除所有授权表中的该用户权限记录
DELECT FROM MySQL.user WHERE host='hostname' and user='username';
4、root 用户修改密码:mysqladmin -u root -p password 'rootpwd'
5、update修改密码: update mysql.user set password=password('1234567') where user='root' and host='localhost';
再执行 FLUSH PRIVILEGES;重新加载用户权限
6、SET修改密码:SET PASSWORD=password('1234567');
7、SET修改普通用户密码: set password for 'user'@'host'=password('123456'); 如用户testUser的 ‘testUser'@'localhost'
8、密码丢失
先切换到mysql的bin目录下:
mysqld 命令如下:mysqld --skip-grant-tables
mysqld-nt命令如下:mysqld-nt --skip-grant-tables
Linux中:mysqld-safe 命令如下:mysqld_safe --skip-grant-tables user=mysql
/etc/init.d/mysql命令如下:/etc/init.d/mysql start-mysqld --skip-grant-tables
然后:net stop Mysql 停止mysql服务进程
再输入:mysqld --skip-grant-tables 启动mysql服务
再另外打开一个命令行窗口,输入不加密码的登陆命令:mysql -u root
登陆成功后,用update或set重置密码即可。
9、收回权限 revoke
数据备份
1、mysqldump -u root -p 数据库名(或数据库下的表名:samp_db 或samp_db test)>D:/work/test.sql
2、unix系统下:mysqlhotcopy -u root -p test /usr/backup 将test数据库备份到 /usr/backup 目录下
3、将备份导入数据库:mysql -u root -p 数据库名 <D:/work/work.sql
若已经登录mysql服务器:use samp_db;再 source filename;如:source D:/work/work.sql
表的导入和导出
1、select * from samp_db.test into outfile ''D:\test1.txt'; 将 samp_db 数据库中的 test 表中的记录导出到文本文件。
2、
select * from table_name
into outfile 'C:/ProgramData/MySQL/MySQL Server 5.7/xx.txt'
FIELDS
TERMINATED BY ',' 表示字段间用逗号分隔
OPTIONALLY ENCLOSED BY ' \" ' 表示每个字段用双引号括起来
ESCAPED BY ' \' ' 将系统默认的转义字符替换为单引号
LINES
TERMINATED BY '\r\n' 表示每行以回车换行符结尾
3、mysql -u root -p (--vertical) --execute='select * from products;' samp_db > D:\test1.txt
4、导入
load date infile 'D:\test1.txt ' into table samp_db.products;
日志
1、删除所有二进制日志文件:reset master;
2、purge master logs before 'date';删除date之前的所有日志文件
purge master logs to 'log_name'; 删除文件名编号比指定文件编号小的所有日志文件
3、查看日志文件的个数和名称:show binary logs;
查看二进制文件: mysqlbinlog D:/MySQL/log/binlog.000001
4、恢复 mysql 数据库到2013年3月30日15:27:48 时的状态,恢复这个时间之前的。
mysqlbinlog --stop-date='2013-03-30 15:27:48' D:\mysql\log\binlog\binlog.000008 | mysql -u user -p pass
5、暂停记录二进制日志:set sql_log_bin =0;恢复则为 1
6、查看错误日志:show variables like 'log_error'; 删除后重建错误日志:flush logs;