暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Docker:Mysql 安装和常用的SQL应用

拾荒的小海螺 2022-11-21
304

1、安装镜像

查找要安装的MySQL指定版本

地址:

https://hub.docker.com/_/mysql?tab=tags&page=1&ordering=last_updated

    docker pull mysql:5.7   # 拉取 mysql 5.7
    docker pull mysql # 拉取最新版mysql镜像

    查看拉取成功与否:

      sudo docker images


      2、文件映射

      将MySQL常用的log/data/conf映射到本虚拟机上,便于修改和维护

        docker run -p 3306:3306 --name mysql \
        -v /shop/mysql/log:/var/log/mysql \
        -v /shop/mysql/data:/var/lib/mysql \
        -v /shop/mysql/conf:/etc/mysql \
        -e MYSQL_ROOT_PASSWORD=shop131420\
        -d mysql:5.7

        查看运行成功与否:

          sudo docker ps


          3、配置MySQL字符集

          在conf目录下的my.cnf配置MySQL使用的字符码:

            [client]
            default-character-set = utf8mb4


            [mysql]
            default-character-set = utf8mb4


            [mysqld]
            #设置utf8mb4字符集
            character-set-client-handshake = FALSE
            character-set-server = utf8mb4
            collation-server = utf8mb4_unicode_ci
            init_connect=‘SET NAMES utf8mb4’


            4、连接Mysql

            1).进入docker本地的MySQL:

              sudo docker exec -it mysql bin/bash

              2).再者使用MySQL命令行进入操作界面

                mysql -uroot -pshop131420

                3).MySQL权限管理

                执行当前赋值所有权限,以防本地客户端无法连接Mysql数据库

                  grant all privileges on *.* to root@'%' identified by "shop131420";


                  5、开机自启

                  添加Mysql自动启动机制,以防服务器宕机不会重启。

                    docker update mysql --restart=always


                    6、Mysql SQL

                    A、Create user from Mysql

                      //创建lmengi用户
                      insert into mysql.user(Host,User,Password) values("localhost","lmengi",password("lmengi"));


                      //赋值所有权限给当前lmengi用户
                      GRANT ALL PRIVILEGES ON *.* TO 'lmengi'@'localhost' IDENTIFIED BY 'lmengi' WITH GRANT OPTION;


                      //刷新系统权限表
                      flush privileges;


                      B、Create database from MySql

                        //创建数据库
                        drop database if exists icom;
                        create database icom DEFAULT CHARSET utf8 COLLATE utf8_general_ci;


                        //先赋值本地权限
                        grant select,insert,update,delete,create,drop on icom.* to iusr@localhost 
                        Identified by "iusr123";


                        //后赋值所有权限
                        grant all privileges on icom.* to iusr@"%" Identified by "iusr123" WITH GRANT OPTION
                        use icom;


                        FLUSH  PRIVILEGES
                        注: icom数据库,iusr 用户名,iusr123密码


                        C、Create table from Mysql

                          drop table if exists log ;
                          CREATE TABLE log (
                          logId int NOT NULL AUTO_INCREMENT ,
                          productId int NULL COMMENT '商品ID' ,
                          UserId int NULL COMMENT '审核管理员ID' ,
                          createTime datetime NULL COMMENT '审核时间' ,
                          message varchar(255NULL COMMENT '审核的理由' ,
                          statusId int NULL COMMENT '审核状态:1,通过;2,不通过' ,
                          PRIMARY KEY (logId)
                          ) ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COMMENT='审核日志表';

                          注意:MyISAM和InnoDB的区别


                          D、Add column and drop column from table tlog

                            alter table tlog drop column log_size;
                            alter table tlog add log_size varchar(32) comment '日志大小';


                            E、Insert into table from Mysql

                              insert into log (message) VALUES ("rensheng");//注意空格
                              --单表插入多条数据
                              INSERT INTO table(APPROVE_NAME,CORP_ID,IS_SHOWTIME) 
                              VALUES("请假单",2,1),("出差申请单",2,1),("用车申请单",2,0),("采购申请单",2,0),
                              ("报销申请单",2,0),("外出申请单",2,1),("调休申请单",2,1),("加班申请单",2,1),
                              ("补休申请单",2,1),("开会申请单",2,1);

                              F、Update column from table

                                use lmengidb;
                                ALTER TABLE `tlog`
                                CHANGE COLUMN `isshow` `isShow`  int(11NULL DEFAULT 0 COMMENT '0,不显示;1,显示' AFTER `log_size `;


                                ALTER TABLE `tlog` 
                                ADD `prior` BIGINT(20) NOT NULL DEFAULT '0' COMMENT '权重' AFTER `isshow`;

                                G、Mysql 查询今天、昨天、7天、近30天、本月、上一月 数据

                                  今天:select * from 表名 where to_days(时间字段名) = to_days(now());
                                  昨天:SELECT * FROM 表名 WHERE TO_DAYSNOW( ) ) - TO_DAYS( 时间字段名) <= 1
                                  7天:SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)
                                  本周:SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) 
                                  YEARWEEK(now());
                                  近30天:SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)
                                  本月:SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMATCURDATE( ) , '%Y%m' )
                                  上一月:SELECT * FROM 表名 WHERE PERIOD_DIFFdate_formatnow( ) , '%Y%m' ) ,
                                  date_format( 时间字段名, '%Y%m' ) ) =1

                                  文章转载自拾荒的小海螺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                  评论