Mysql配置文件与用户与权限管理

Mysql配置文件

1、二进制日志log-bin

1.1 、主从复制及备份恢复(了解)

log-bin 中存放了所有的操作记录(写?),可以用于恢复。相当于 Redis 中的 AOF
my.cnf中的log-bin配置(默认关闭)

2 、错误日志log-error

2.1 、默认是关闭的,记录严重的警告和错误信息,每次启动和关闭的详细信息等。

3、慢查询日志log

可自定义“慢”的概念:0-10秒之间的一个数。 慢查询日志会将超过这个查询事件的查询记录下来,方便找到需要优化的 sql 。
用于优化sql语句是使用。

3.1、默认关闭,记录查询的sql语句,如果开启会减低mysql的整体性能,因为记录日志也是需要消耗系统资源的

4、数据文件
4.1、两系统
4.1.1 windows

…\MySQLServer5.5\data目录下很多数据库文件

4.1.2 linux

默认路径:/var/lib/mysql

可在配置文件中更改 /usr/share/mysql/ 下的 my-huge.cnf
每个目录代表一个同名的库

4.2、Myisam存放方式
4.2.1 frm文件(framework)

存放表结构

4.2.2 myd文件(data)

存放表数据

4.2.3 myi文件(index)

存放表索引

4.3、innodb存放方式
4.3.1 ibdata1

Innodb引擎将所有表的的数据都存在这里面 /usr/share/mysql/ibdata1 而frm文件存放在库同名的包下

4.3.2 frm文件

存放表结构

4.3.3 单独存放
Mysql配置文件与用户与权限管理_第1张图片

set innodb_file_per_table=on
create table mmm (id int(20) auto_increment ,name varchar(20),primary key(id));

设在为 on 后 单独以 table名.ibd 的文件名存储
在这里插入图片描述

5、如何配置
5.1、 windows

my.ini文件(配置文件)

5.2、 Linux

/etc/my.cnf文件(配置文件)

MySQL的用户管理

6、创建用户

create user zhang3 identified by ‘123123’;
表示创建名称为zhang3的用户,密码设为123123;

7、了解user表
查看用户

select host,user,password,select_priv,insert_priv,drop_priv from
mysql.user;

select * from user\G; 将 user 中的数据以行的形式显示出来(针对列很长的表可以采用这个方法 )
Mysql配置文件与用户与权限管理_第2张图片

host : 表示连接类型

% 表示所有远程通过 TCP方式的连接
IP 地址 如 (192.168.1.2,127.0.0.1) 通过制定ip地址进行的TCP方式的连接 机器名 通过制定i网络中的机器名进行的TCP方式的连接
::1 IPv6的本地ip地址 等同于IPv4的 127.0.0.1
localhost 本地方式通过命令行方式的连接 ,比如

mysql -u xxx -p 123xxx 方式的连接。

User:表示用户名

同一用户通过不同方式链接的权限是不一样的。

password : 密码

所有密码串通过 password(明文字符串) 生成的密文字符串。加密算法为MYSQLSHA1 ,不可逆 。
mysql 5.7 的密码保存到 authentication_string 字段中不再使用password 字段。

select_priv , insert_priv等
为该用户所拥有的权限。

3、设置密码

修改当前用户的密码: set password=password(‘123456’)

修改某个用户的密码:

update mysql.user set password=password(‘123456’) where user=‘li4’;
flush privileges; #所有通过user表的修改,必须用该命令才能生效。

4、修改用户

修改用户名: update mysql.user set user=‘li4’ where user=‘wang5’; flush privileges; #所有通过user表的修改,必须用该命令才能生效。在这里插入图片描述

5、删除用户

drop user li4 ;
Mysql配置文件与用户与权限管理_第3张图片

不要通过delete from user u where user=‘li4’ 进行删除,系统会有残留信息保留。

权限管理

1、授予权限

grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
该权限如果发现没有该用户,则会直接新建一个用户。

比如

grant select,insert,delete,drop on atguigudb. to li4@localhost ;
#给li4用户用本地命令行方式下,授予atguigudb这个库下的所有表的插删改查的权限。
*

grant all privileges on . to joe@’%’ identified by ‘123’;
#授予通过网络方式登录的的joe用户 ,对所有库所有表的全部权限,密码设为123. 就算 all privileges 了所有权限,grant_priv 权限也只有 root 才能拥有。

给 root 赋连接口令 grant all privileges on . to root@’%’
;后新建的连接没有密码,需要设置密码才能远程连接。 update user set password=password(‘root’)
where user=‘root’ and host=’%’;

2、收回权限
授权命令:

revoke 权限1,权限2,…权限n on 数据库名称.表名称 from 用户名@用户地址 ;

REVOKE ALL PRIVILEGES ON mysql. FROM joe@localhost;
#若赋的全库的表就 收回全库全表的所有权限 REVOKE select,insert,update,delete ON mysql. FROM joe@localhost;
#收回mysql库下的所有表的插删改查权限 对比赋予权限的方法。 必须用户重新登录后才能生效

3、查看权限
查看当前用户权限

show grants;

查看某用户的全局权限

select * from user ;

查看某用户的某库的权限

select * from db;

查看某用户的某个表的权限

select * from tables_priv;

三、通过工具远程访问

1、先 ping 一下数据库服务器的ip 地址确认网络畅通。

2、关闭数据库服务的防火墙

service iptables stop

3、 确认Mysql中已经有可以通过远程登录的账户

select * from mysql.user where user=‘li4’ and host=’%’;

如果没有用户,先执行如下命令:

grant all privileges on . to li4@’%’ identified by ‘123123’;

4、测试连接:
Mysql配置文件与用户与权限管理_第4张图片

你可能感兴趣的:(Mysql)