一、连接进入mysql
1、格式:
无密码 :mysql -u用户 -p
例: mysql -uroot -p
有密码: mysql -u用户 -p密码
例: mysql -uroot -pmysql
2、本地连接进入:
mysql -u用户名 -p密码
3、远程连接进入:
mysql -h远程主机ip -u用户名 -p密码
二、退出数据库
mysql>quit/exit 回车
三、修改密码
1、开始添加密码
mysql>set password=password("密码");
mysql>flush privileges;
2、修改新密码
mysql>use mysql;
mysql>update user set password=password("密码") where user="root";
mysql>flush privileges;
3、版本8点后修改密码方式(大小写字母及特殊字符和数字组合):
msyql>use mysql
mysql>alter user "root"@"localhost" identified with mysql_native_password by "Mysql_123";
四、库用户
1、查看所有用户
mysql>select host,user,password from mysql.user;
mysql>select disnct host,user,password from mysql.user:
2、查看当前用户
mysql>select user();
mysql>select current_user;
3、增加新用户
grant select on 库名.* to 用户名@ip identified by “密码”;
1)、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限
mysql> grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";
2)、添加用户
a)以root用户登录数据库,运行以下命令:
mysql> create user zhangsan identified by 'zhangsan';
上面的命令创建了用户zhangsan,密码是zhangsan。在mysql.user表里可以查看到新增用户的信息:
mysql> select user,host,password from mysql.user where user='zhangsan';
b)授权
将root数据库的所有操作权限都授权给了用户zhangsan。
mysql>grant all privileges on *.* to ’zhangsan‘@'%' with grant option;
mysql> flush privileges;
c)在mysql.db表里可以查看到新增用户名及数据库权限的信息:
也可以通过show grants
命令查看权限授予执行的命令:
mysql>show grants for 'zhangsan';
privilegesCode表示授予的权限类型,常用的有以下几种类型[1]:
- all privileges:所有权限。
- select:读取权限。
- delete:删除权限。
- update:更新权限。
- create:创建权限。
- drop:删除数据库、数据表权限。
dbName.tableName表示授予权限的具体库或表,常用的有以下几种选项:
- .:授予该数据库服务器所有数据库的权限。
- dbName.*:授予dbName数据库所有表的权限。
- dbName.dbTable:授予数据库dbName中dbTable表的权限。
username@host
表示授予的用户以及允许该用户登录的IP地址。其中Host有以下几种类型:
- localhost:只允许该用户在本地登录,不能远程登录。
- %:允许在除本机之外的任何一台机器远程登录。
- 192.168.52.32:具体的IP表示只允许该用户从特定IP登录。
password指定该用户登录时的面。
flush privileges表示刷新权限变更。
4、删除用户
运行以下命令可以删除用户:
mysql>drop user zhangsan@'%';
drop user命令会删除用户以及对应的权限,执行命令后你会发现mysql.user表和mysql.db表的相应记录都消失了。
五、创建数据库
格式:crate database 数据库名;
mysql> create database bc;
设置uf8编码格式
mysql>create database bc charset utf8;
查看创建数据库语句:
mysql>show crate database 数据库名 \G;
六、显示所有得数据库
格式:show databases;
mysql>show databases;
七、删除数据库
格式:drop database 数据库名
mysql>drop database test;
删除一个不确定的数据库
mysql>drop database if exists drop_database;
八、查看当前选择的数据库
格式: select databases();
mysql>select databases();
九、备份数据库
导入数据库
mysql>source 数据表名.sql
使用当前数据库
mysql>use databasename;
查看当前使用的库名
mysql>select database();
查看当前库的所有表名
mysql>show tables;
新建表
mysql>create table tablename("字段1“ type not null, "字段2” type not null, .....)
命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);
例如,建立一个名为MyClass的表,
字段名 | 数字类型 | 数据宽度 | 是否为空 | 是否主键 | 自动增加 | 默认值 |
id | int | 4 | 否 | primary key | auto_increment | |
name | char | 20 | 否 | |||
sex | int | 4 | 否 | 0 | ||
degree | double | 16 | 是 |
mysql> create table MyClass(
id int(4) not null primary key auto_increment,
name char(20) not null,
sex int(4) not null default '0',
degree double(16,2));
删除表
mysql>drop table tablename;
表的操作
表添加字段:
mysql>alter table tablename add (字段) 类型。。。。
添加多个字段:
mysql>alter table tablename add ((字段) 类型。。。。, (字段) 类型。。。。)
修改表字段:
mysql>alter table tablename change 原字段名 新字段名 类型 是否为空
修改字段类型:
mysql>alter table tablename modify column 字段名 字段类型
在指定的字段后添加字段:
mysql>alter table tablename column 新字段名 类型 是否为空 after 旧字段名
删除表的字段:
mysql>alter table tablename drop 字段名;
删除表中数据:
命令:delete from 表名 where 表达式
例如:删除表 MyClass中编号为1 的记录
mysql> delete from MyClass where id=1;
表插入数据:
mysql>inset into tablename values (数据1,数据2)或 insert into tablename (字段1,字段2,...) values (数据1,数据2,....)
mysql>insert into tablename (字段1,字段2,...) values (数据1,数据2,....),(....)
mysql>insert into goods_cates (cate_name) select cate from goods group by cate;
加索引
mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
例子: mysql> alter table employee add index emp_name (name);
加主关键字的索引
mysql> alter table 表名 add primary key (字段名);
例子: mysql> alter table employee add primary key(id);
加唯一限制条件的索引
mysql> alter table 表名 add unique 索引名 (字段名);
例子: mysql> alter table employee add unique emp_name2(cardnumber);
删除某个索引
mysql> alter table 表名 drop index 索引名;
例子: mysql>alter table employee drop index emp_name;
数据库的主从复制
数据库的优化
数据库sql注入
1.显示MYSQL的版本
mysql> select version();
2. 显示当前时间
mysql> select now();
3. 显示年月日
SELECT DAYOFMONTH(CURRENT_DATE);
SELECT MONTH(CURRENT_DATE);
SELECT YEAR(CURRENT_DATE);
4. 显示字符串
mysql> SELECT "welecome to my blog!";