Python全栈•数据库(二)⁃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;
  • 查询当前操作所在的数据库名称 
    select database();

③选择

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地址';
  • 取消权限 
    revoke 权限 on 数据库.表 from '用户'@'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命令 
    mysqladmin -u用户名 -p密码 password 新密码
  • 方式二: 直接设置用户密码 
    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
  • 直接进来,修改密码 
    update mysql.user set authentication_string=password('123456') where user='root';
  • 刷新权限 
    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'



猜你喜欢

转载自blog.csdn.net/weixin_37973929/article/details/79646828