zoukankan      html  css  js  c++  java
  • python_fullstack数据库(二)-MySQL库操作

    MySQL数据库

    二、库操作

    1、系统库简介

    ①information_schema :虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等

    ②mysql:核心数据库,里面包含用户、权限、关键字等信息,不可以删除

    ③performance_schema:mysql 5.5版本后添加的新库,主要收集系统性能参数,记录处理查询请求时发生的各种事件、锁等现象

    ④sys:mysql 5.7版本新增加的库,通过这个库可以快速的了解系统的元数据信息,可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助

    2、库操作

    ①增加

    create database db_name charset utf8;

    ②查看

    • 查询当前用户下所有数据库 
      show databases ;
    • 查看创建数据库信息 
      show create database db_name;
    • 查询当前操作所在的数据库名称 
      show create database db_name

    ③选择

    use db_name;

    ④删除

    drop database db_name;

    3、库的命名规范

    • 可以由字母、数字、下划线、@、#、$组成,最长128位且区分大小写
    • 命名需要保证唯一性
    • 不能使用关键字、不能单独使用数字

    4、用户权限

    ①用户管理

    • 创建用户 
      create user '用户名'@'IP地址' identified by '密码';
    • 删除用户 
      drop user '用户名'@'IP地址';
    • 修改用户 
      rename user '用户名'@'IP地址' to '新用户名'@'IP地址';

    ②授权管理

    • 查看权限 
      show grants for '用户'@'IP地址';
    • 授权 
      grant 权限 on 数据库.表 to '用户'@'IP地址';
    • 取消权限 
      grant 权限 on 数据库.表 to '用户'@'IP地址';
    • 例:创建用户并给用户授权
      #创建新用户
      create user 'yang'@'localhost' identified '123';
      
      #授权方式一:为yang授权db1数据库下的所有表的查询、更新、修改权限
      grant select,update,delete on db1.*  to 'yang'@'localhost';
      
      #授权方式二:为yang授权所有库的所有权限(除grant权限外)
      grant all privileges on *.*  to 'yang'@'localhost';
      
      #刷新用户权限
      flush privileges;

    5、修改密码、忘记密码

    ①修改密码

    • 方式一: mysqladmin命令    5.6版本数据库专用
      mysqladmin -u用户名 -p密码 password 新密码
    • 方式二: 直接设置用户密码  5.7 or 5.6 都可以用
      set password for '用户名'@'IP' = password('新密码'); 
      flush privileges;
    • 方式三:修改mysql库下的user表
      # 5.7版本修改密码方式: 修改 和 刷新权限 需要分开执行
      update mysql.user set authentication_string=password('新密码') where user= '用户名';       
      flush privileges;
      
      # 5.6版本修改密码方式:
      update mysql.user set password = password('新密码') where user= '用户名';
      flush privileges;

    ②忘记密码  (虽然可以暴力破解,但是只能在数据库本身操作,无法远程

      • 首先打开cmd窗口,关闭mysql服务 
        net stop mysql
      • 然后跳过权限检查,启动mysql,输入命令 
        mysqld --skip-grant-tables
      • 重新打开一个新的cmd窗口,启动客户端(已跳过权限检查,可以直接登录) 
        mysql
      • 直接进来,修改密码 
        mysql
      • 刷新权限 
        flush privileges;

    6、中文编码问题

    ①查询字符编码

    SHOW VARIABLES LIKE 'char%';

    ②解决中文编码无法显示问题

    • 创建my.ini文件,放在mysql根路径下
    • 在该文件中添加以下内容即可
    • 添加此文件后需要重新启动服务,以保证此文件生效
    # my.ini文件内容:
       [client]
       default-character-set=utf8
    
       [mysql]
       #设置mysql客户端默认字符集
       default-character-set=utf8
    
       [mysqld]
       #设置3306端口
       port = 3306
    
       #允许最大连接数
       max_connections=200
    
       #服务端使用的字符集默认为8比特编码的latin1字符集
       character-set-server=utf8
    
       #创建新表时将使用的默认存储引擎
       default-storage-engine=INNODB
    
    
       #解决mysql在执行sql语句后出现1055错误,sql_mode = only_full_group_by不相容
       sql_mode='NO_ENGINE_SUBSTITUTION'
    
      #or  解决mysql在执行sql语句后出现1055错误
      sql-mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"
  • 相关阅读:
    asp.net2.0系列视频教程
    Android入门教程(三十一)SQLite分页读取(转)
    sql语句大全
    判断是不是ie浏览器 加上ie11
    字节面试题
    泛型
    线程和
    sysbench工具
    自定义集合类
    类型通配符
  • 原文地址:https://www.cnblogs.com/lidaxu/p/8490547.html
Copyright © 2011-2022 走看看