zoukankan      html  css  js  c++  java
  • MySql

    MySql

    • 安装

      1. 配置my.ini 至Mysql安装目录(utf-8编码)

        [mysql]
        # 设置mysql客户端默认字符集
        default-character-set=utf8
        [mysqld]
        #设置3306端口
        port = 3306 # mysql服务器默认端口
        # 设置mysql的安装目录
        basedir=E:mysql
        # 设置mysql数据库的数据的存放目录
        datadir=E:mysqldata
        # 允许最大连接数
        max_connections=200
        # 服务端使用的字符集默认为8比特编码的latin1字符集
        character-set-server=utf8
        # 创建新表时将使用的默认存储引擎
        default-storage-engine=INNODB
        
        
      2. 添加环境变量

        e:mysqlin
        
      3. 管理员身份cmd,切换到mysqin目录,运行:

        mysqld install # 注册mysql服务
        
      4. 管理员身份cmd,运行:显示服务启动成功

        net start mysql # 启动mysql服务, 开机自启动
        net stop mysql # 停止服务
        
      5. MySql在windows服务中自动启动: 服务名称:MySql

      6. MySql是CS架构的软件:

        • server端: 开机自动启动

        • client端: mysql -uroot -p 连接服务端

          • -u: 用户 root:管理员
          • -p: 密码登陆(刚创建没有密码)

          image-20200322215121985

    • 启动客户端连接server

      无密码登陆:mysql -uroot -p
      密码登陆:  mysql -uroot -p123
      连接其他电脑的server端: mysql -uroot -p123 -h192.168.14.12(其他电脑ip)
      
      
    • MySql账号操作

      #进入mysql客户端
      $mysql
      mysql> select user();  #查看当前用户
      mysql> exit     # 也可以用q quit退出
      
      # 默认用户登陆之后并没有实际操作的权限
      # 需要使用管理员root用户登陆
      $ mysql -uroot -p   # mysql5.6默认是没有密码的
      #遇到password直接按回车键
      mysql> set password = password('root'); # 给当前数据库设置密码
      
      # 创建账号
      mysql> create user 'eva'@'192.168.10.%'  IDENTIFIED BY '123';# % 表示网段 密码123
      mysql> create user 'eva'@'192.168.10.5'   # 指示某机器可以连接
      mysql> create user 'eva'@'%'                    #指示所有机器都可以连接  
      mysql> show grants for 'eva'@'192.168.10.5';查看某个用户的权限 
      # 远程登陆
      $ mysql -uroot -p123 -h192.168.10.3(server端ip)
      
      # 给账号授权
      mysql> grant all # 所有权限:增删改查
      mysql> grant select # 查询权限
      mysql> grant insert # 写入权限
      mysql> grant select,insert # 查询,写入权限
      
      mysql> grant 权限类型 on ftp.* to 'guest'@'192.168.3.%'
      # ftp库下的所有表 给 guest用户所在的网段(或指定单个电脑ip)
      
      mysql> grant all on *.* to 'eva'@'%';
      mysql> flush privileges;    # 刷新使授权立即生效
      
      # 创建账号并授权
      mysql> grant all on *.* to 'eva'@'%' identified by '123'
      
    • 数据库操作(use 数据库名:切换到数据库)

      数据库:文件夹 | 表: 文件

      * use 数据库名 # 切换到数据库
      1. 操作文件夹(库)
         增:create database db1 charset utf8;
         查:show databases;
         改:alter database db1 charset latin1;
         删除: drop database db1;
      
      
      2. 操作文件(表)
         先切换到文件夹下:use db1
         增:create table t1(id int,name char); # t1:表名(字段 类型, name char)
         查:show tables;
         改:alter table t1 modify name char(3);
            alter table t1 change name name1 char(2);
         删:drop table t1;
         
         查看表结构: desc 表名
          
      
      3. 操作文件中的内容(记录)
         增:insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');
         查:select * from t1;
         改:update t1 set name='sb' where id=2;
         删:delete from t1 where id=1;
      
         清空表:
             delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
             truncate table t1;数据量大,删除速度比上一条快,且直接从零开始,
      
      *auto_increment 表示:自增
      *primary key 表示:约束(不能重复且不能为空);加速查找
      
      
    • ubuntu mysql 启动与重启

      # 修改每次启动都要sudo
      1. 修改root用户
      use mysql
      select User, Host,plugin from user;
      # 查看用户的权限,是否是mysql_native_password,如果不是,则将auth_sock改为mysql_native_password。
      update user set plugin = 'mysql_native_password' where user = 'root';
      flush privileges;
      
      
      1、使用 service 启动:service mysql start
      2、使用 mysqld 脚本启动:/etc/init.d/mysql start
      3、使用 safe_mysqld 启动:safe_mysql&
      mysql关闭:
      
      1、使用 service 启动:service mysql stop
      2、使用 mysqld 脚本启动:/etc/init.d/mysql stop
      3、mysqladmin shutdown
      mysql重启:
      
      1、使用 service 启动:service mysql restart
      2、使用 mysqld 脚本启动:/etc/init.d/mysql restart
      
    • mysql 时间差异, UTC时间, 中国处在东8区,本地要+8小时

      临时方案:

      mysql> SET time_zone = ‘+8:00‘;
      

      永久解决方案:

      配置windows:my.ini linux: /etc/my.cnf

      [mysqld]
      default-time_zone = ‘+8:00‘
      
      # 重启服务,linux
      service mysql restart 
      # windows
      net stop mysql
      net start mysql
      

      pycharm设置 settings.py

      TIME_ZONE = 'Asia/Shanghai'
      

    Count参数区别于执行效率

    • count(1)、count()和count(字段名)执行效果上的区别:

      • count()包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NUL
      • count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL
      • count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计。
    • count(1)、count(*)和count(字段名)执行效率上的区别:
      如上可以看出其实四种方式的效率是一样的,但是网上有如下说法:

      • 列名为主键,count(列名)会比count(1)快
      • 列名不为主键,count(1)会比count(列名)快
      • 如果表多个列并且没有主键,则 count(1) 的执行效率优于 count(
      • 如果有主键,则 select count(主键)的执行效率是最优的
      • 如果表只有一个字段,则 select count()最优。
  • 相关阅读:
    企业移动视频通话会议EasyRTC视频会议通话系统开拓视频会议行业新前景
    安防网络摄像头海康大华硬盘录像机视频流媒体服务器EasyNVR调用接口时提示未授权问题解决方案
    安防RTSP_Onvif网络摄像头互联网直播视频流媒体服务器在使用过程中如何保存用户登录时的信息
    RTSP、RTMP、HTTP-FLV、 HLS安防网络摄像头互联网直播音视频流媒体服务器EasyNVR如何实现密码的MD5加密
    安防RTSP_Onvif网络摄像头互联网直播视频流媒体服务器EasyNVR如何解决视频流Ajax跨域访问的问题
    Python之网路编程利用threading模块开线程
    Python之网路编程之线程介绍
    Python之网路编程之进程池及回调函数
    Python之网路编程之-互斥锁与进程间的通信(IPC)及生产者消费者模型
    Python之网路编程利用multiprocessing开进程
  • 原文地址:https://www.cnblogs.com/relaxlee/p/12843036.html
Copyright © 2011-2022 走看看