zoukankan      html  css  js  c++  java
  • mysql使用1(用户+权限)

    Linux元素据(文件属性)存储在inode

    忘记本地管理员密码(未忘记密码,直接使用mysqladmin -uroot -p password 新密码)
    1关闭数据库
    2维护模式启动:mysqld_safe --skip-grant-tables --skip-networking & //重置密码以后使用/etc/init.d/mysqld stop(restart)关闭
    说明:--skip-grant-tables跳过授权表,--skip-networking跳过远程登陆

    3执行mysql连接客户端,select user,host,authentication_string from mysql.user;查询用户
    desc mysql.user;查询表字段,5.7版本密码是authentication_string字段
    mysql.session和mysql.sys是系统内置用户

    修改密码:
    flush privileges; //必须先执行这句,因为--skip-grant-tables在启动时跳过了授权,所以这里要手动从磁盘加载授权表内存
    grant all on . to root@'localhost' identified by '新密码'; //也可以用alter user root@'localhost' identified by '新密码';

    mysql连接支持两种,远程tcp/ip,本地socket,不依赖网络(mysql -uroot -p密码 [-S /tmp/mysql.sock])
    核心程序mysqld,数据文件ibd,实例(后台运行、守护运行的进程),启动时预分配内存大小(独占内存)
    实例组成 = mysqld + master thread + work thread(s) + 预分配内存

    mysqld服务器进程结构,客户端通过tcp/ip或socket请求连接到mysqld,由内部线程处理,经过连接层->SQL层(sql_mode,sql92标准)->存储引擎层->磁盘、内存、网络
    查看连接线程命令:show processlist;终端使用mysql命令连接就是一个会话,在show processlist;能查到,默认能连151给会话,由参数max_connections控制,会话没有动作8小时断开,由参数wait_timeout控制
    基于代价的最优执行方法:cpu,内存,io,时间消耗最少

    逻辑结构的数据库,在物理存储上是数据文件目录下的一个文件夹,所以在/data/mysql下mkdir 文件夹,在mysql客户端执行show databases;能够查到
    8.0版本不太支持MyISAM引擎
    myisam的表,3个文件构成,表名.frm存储表结构(列、列属性),表名.MYD存储数据记录,表名.MYI存储索引,没有单独存放表的元数据(表属性)
    innodb的表,2给文件构成,表名.frm存储表结构(列、列属性),表名.ibd存储数据记录和索引,数据字典信息(表的元数据即表属性)存在基表(数据目录下ibdata1文件,类似linux的inode)

    innodb非分区表:页是最小io单元,区是最小分配单元,多个区构成段(一个表也称为一个段)
    ibd文件,每页(page)16k(建库的时候可以调整),每次申请空间分配64页连续空间,即1m(如果page调整为32k,则每次分配32页,即1m),索引按页为单位
    64页空间(1m)称为一个区

    mysql的用户定义:用户名@'白名单'
    举例(添加注释的3种指定网段的较常用,不建议用%,没有起到过滤的作用):
    root@'%'
    root@'localhost'
    root@'127.0.0.1'
    root@'10.0.0.%' 代表10.0.0.%/255.255.255.0,即10.0.0.1-10.0.0.255
    root@'10.0.0.5%' 代表10.0.0.50-10.0.0.59
    root@'10.0.0.0/255.255.254.0' 代表。。。
    root@'10.0.%'

    创建用户并授权(并设置密码):
    create user 用户名@'白名单' identified by '密码'; 不指定identified by则只创建用户
    select user,host from mysql.user; 查询用户
    grant all on . to 用户@'白名单' identified by '密码'; 授权

    8.0之前的版本可以不创建用户,直接授权就能自动创建用户:grant all on . to 用户@'白名单' identified by '密码';

    修改用户密码:
    alter user 用户名@'白名单' identified by '新密码';

    删除用户(生产环境一般屏蔽该功能):
    drop user 用户名@'白名单';

    权限管理(all+with grant option构成管理员权限,普通用户一般只授予SELECT,UPDATE,INSERT,DELETE权限):
    8.0之前,按命令(select、delete、update、insert、drop等)
    8.0之后,设定角色,授权角色
    权限列表:ALL(普通管理员)、。。。、with grant option(可以给别的用户授权的权限,本地管理员具备)
    授权命令:
    grant 权限(多给用逗号隔开) on 作用目标(库名.表名,都可以为*) to 用户@'白名单' identified by '密码' [with grant option];
    查询权限:
    show grants for 用户名@'白名单'; 若查询结果的权限是USAGE,表示只能登陆
    回收分配的权限列表中的某些权限:
    revoke 权限(如delete) on 作用目标 from 用户@'白名单';

    生产中开用户:开发邮件申请
    领导批复、作用目标、操作类型、客户端地址(白名单)、账号使用库名或业务名、root权限不给

    参考:https://www.jianshu.com/p/e872bc12f583

  • 相关阅读:
    CocosCreator 快速开发推箱子游戏,附代码
    Cocos Creator实现左右跳游戏,提供完整游戏代码工程
    Cocos Creator一步一步实现重力球游戏,附完整代码
    PS_制作粉笔字
    高效实用的抠图方法
    PS文件和AI文件之间如何保持分层相互导入?
    行内元素之间出现间隙的bug解决
    CSS中让图片垂直居中的方法
    html中input按钮怎么添加超链接
    【转】Profiler使用方法
  • 原文地址:https://www.cnblogs.com/kibana/p/12236611.html
Copyright © 2011-2022 走看看