mac系统下mysql密码设置与破解
mysqladmin -uroot -p password "123" # 为root账户设置密码
mysqladmin -uroot -p123 password "123abc" # 修改root用户密码
忘记密码后如何强制刷新密码?
1、先停止mysql服务端
2、在终端上以超级用户的形式输入命令:mysqld_safe --skip--grant--tables
3、在开启一个终端,输入:mysql -uroot -p 登陆mysql
4、进入mysql后,修改root用户密码;输入命令:update mysql.user set password=password("123") where user="root" and host="localhost";
5、然后在刷新,输入命令:flush privileges;
6、然后再再终端上干掉mysql服务
7、然后再正常重启mysql服务端。
权限管理
1、创建账户
创建本地账号(只能在mysql服务端的那台机子上登陆)
create user 'xu'@'localhost' identified by '123abc'
创建远程账号
create user 'xu'@'192.169.0.30' identifide by '123abc' # 只能在此ip地址的机器上登陆
create user 'xu'@'192.169.0.%' identifide by '123abc' # 能在192.169.0这一网段的机器上登陆
# 使用此账户登陆
mysql -uxu -p123abc -h 服务端ip地址
2、授权
user :*.* 所有权限 (不包含grant权限)
授予权限:grant all on *.* to 'xu'@'localhost';
grant select on *.* to 'xu'@'localhost'; 只放行查询权限
移除权限:revoke select on *.* to 'xu'@'localhost'; 删除权限
db:db1.* ,库级别的权限(只对某一个库有权限)
授予db权限:grant select on db1.* to 'xu'@'localhost'; 只放行db1库下的所有表的查询权限
table_priv: db1.t1 ,表级别的权限
授予权限:grant select on db1.t1 to 'xu'@'localhost'; 只放行db1库下的t1表的查询权限
columns_priv:字段级别
授予权限:grant select(id,name,age) on db1.t1 to 'xu'@'localhost'; 只放行db1下的t1表的id,name,age字段的查询权限
库的增删改查
增:创建数据库
语法:create database 数据库名 charset utf-8;
删:删除数据库
语法:drop database 数据库名;
改:改变数据库的字符编码
语法:alter database 数据库名 charset gbk;
查:
语句:1、show databases; 查询有哪些数据库,
2、show create database 数据库名; 查询某个数据库的结构,
3、select database(); 查询正在使用的数据库名
切换到某个数据库的目录下:use 数据库名
表操作
一、存储引擎 --> 表的类型
表的类型不同所对应的存储的方式不同。
通俗点的表达方式:存储引擎就是如何存储数据、如何为数据建立索引和如何更新、查询数据等技术的实现方法。
在MySQL中默认的存储引擎便是innodb
还有其他的存储引擎:MyISAM存储引擎、NDB存储引擎、Memory存储引擎、Infobright存储引擎、NTSE 存储引擎、BLACKHOLE
二、表的增删改查
增:创建表
语句结构:
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);
ps: 1、在同一张表中,字段名不能相同
2、宽度和约束的条件可以选择
3、字段名和类型是必须要有的
查:查看表的结构:
语句结构:1、desc 表名;
2、show create table 表名\G; # 查看表的详细结构
删:删除表
drop table user;
改:改变表的结构
改变表的表名:
alter table 旧表名 rename 新表名;
增加字段:
alter table 表名 add 字段名 数据类型[(宽度) 约束条件];
alter table 表名 add 字段名 数据类型[(宽度) 约束条件] first; # 在第一个插入新字段
alter table 表名 add 字段名 数据类型[(宽度) 约束条件] after 字段名; # 在某个字段的后面插入新的字段
修改存储引擎:
alter table 表名 engine = innodb;
删除字段:
alter table 表名 drop 字段名;
修改字段类型:
alter table 表名 modify 字段名 字段新类型[(宽度), 约束条件];
对已经存在的表增加主键:
alter table 表名 add primary key(字段名,...) # 可以是单个主键也可意识复合组建
删除主键:
alter table 表名 drop primary key
复制表结构:
1、create table 新表名 select * from 要复制的表名 where 1=2; # 只复制表结构,不复制表中的数据,(key不会复制:主键、外键和索引不会复制)
2、create table 新表名 like 就表名 # 复制表结构,并且key一起复制。
三、数据类型
详细参考:
http://www.runoob.com/mysql/mysql-data-types.html
http://dev.mysql.com/doc/refman/5.7/en/data-type-overview.html
1、整数
tinyint: 大小1个字节 有符号范围(-128,127),无符号范围(0,256)
int: 大小4个字节 有符号范围(-2**31,2**31-1),无符号范围(0,2**32-1)
bigint: 大小8个字节 有符号范围(-2**63,2**63-1),无符号范围(0,2**64-1)
2、浮点数
float: 在小数位数比较长的话,精确度降低
double: 在小数位数比较长的话,精确度降低,但比float精确度高
decimal: 精确,小数位数过多,精确度也会降低。
3、字符串
char([设制存储字节的最大字节]):默认为4个字节。
优点:存取速度快
缺点:浪费空间
varchar([设置存储字节的最大字节]):数据有多少个字节存储多少个字节
优点:精准,节省空间
缺点:存取速度慢
ps:1、为什么varchar的存取速度慢,因为在用varchar存数据时,会先用1个或两个字节来存储数据的大小,这样在读取时,就会先读取这个数据的大小,在根据数据的大小来读取数据,这样就会导致读取的速度慢
2、若存储的子节等于最大子节数的时候,char比varchar所占用的空间要小。因为varchar要分出1个或2个子节来存储数据的大小。
sql优化:1、创建表时,定长的类型要放在前面,变长的往后放.
2、当存储的数据子节大小>255;可以在数据库中存放文件路径或url
4、枚举
相当于多个选择中选择一个
如性别: sex enum("男","女") not null default="男"
default是设置此字段的默认值。若是插入的数据没有在选项中择会插入默认值。
5、集合
多个选项中选择多个
如爱好:hobby set("足球","篮球","LOL")
6、时间
date 格式:YYYY-MM-DD
datetime 格式:YYYY-MM-DD HH:MM:SS
time 格式:HH:MM:SS
year 格式:YYYY
ps:常用datetime
来源:https://www.cnblogs.com/zrxu/p/11834094.html