mysql 草稿

grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;

flush privileges;


revoke all on *.* from abc@'%';


mysql -h localhost -u root
mysql -h 192.168.10.1 --port=3300 -utest -p


mysqld-nt --install-manual mysqltest3300 --defaults-file=D:/TestWorkspace/msyql_test2/my.ini
使用--install-manual 选项是将服务设置为手动启动模式
如果想开机自动启动服务只需将--install-manual替换为--install。
mysqld-nt --remove
 
 mysqld --install mysqltest3300
sc config mysqltest3300 start= auto
mysqld –remove mysqltest3300

手机图标问题

vim my.cnf
init-connect='SET NAMES utf8mb4'
character-set-server=utf8mb4


ALTER TABLE reply  CHARSET=utf8mb4;
ALTER TABLE reply MODIFY `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '内容';


CREATE TABLE `user_birth` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `userId` bigint(20) DEFAULT NULL,
  `nickName` varchar(45) DEFAULT NULL,
  `mobile` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `userId` (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
 
set global event_scheduler = 1;

DROP EVENT IF EXISTS birth_clac;
CREATE EVENT birth_clac
on schedule every 1 day starts '2015-1-1 00:00:01'
do
truncate user_birth;
INSERT INTO user_birth(userId, nickName, mobile) SELECT id, nick, mobile from user where TO_DAYS(birth) = TO_DAYS(NOW());

DELIMITER //
CREATE PROCEDURE update_birth_pro
BEGIN
    truncate user_birth;
    INSERT INTO user_birth(userId, nickName, mobile) SELECT id, nick, mobile from user where month(birth) = month(NOW()) and day(birth) = day(NOW());
END
//
DELIMITER ;


DROP EVENT IF EXISTS birth_clac;
CREATE EVENT birth_clac
ON SCHEDULE EVERY 10 MINUTE STARTS DATE_ADD(now(), INTERVAL 1 MINUTE)  
ON COMPLETION PRESERVE ENABLE
DO
call update_birth_pro();


MySQL从5.1开始支持Event功能,有点类似于MsSQL的Job,可以定时自动执行数据汇总。

【语法】

CREATE EVENT [IF NOT EXISTS] event_name
    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE]
    [COMMENT 'comment']
    DO sql_statement;
schedule:
    AT timestamp [+ INTERVAL interval]
  | EVERY interval [STARTS timestamp] [ENDS timestamp]
interval:
    quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
              WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
              DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

其中,
event_name:定时器名,最大长度64个字符,若未指定,则默认为当前的MySQL用户名(不区分大小写);
schedule:限定执行时间;
ON COMPLETION [NOT] PRESERVE:表示是否需要循环复用这个Event;
sql_statement:要执行的SQL语句(也可以使用存储过程代替传统的SQL语句);
comment:对该时间调度器的一个注释,最大长度64个字符;
【关闭事件】
ALTER EVENT event_name ON
COMPLETION PRESERVE DISABLE;
【开启事件】
ALTER EVENT event_name ON
COMPLETION PRESERVE ENABLE;
【删除事件】
DROP EVENT [IF EXISTS] event_name
【注意】:要使用定时器,MySQL的常量GLOBAL event_scheduler必须为on或者是1.
【范例】

1. 每天凌晨1点开始执行数据更新:
CREATE EVENT [IF NOT EXISTS] E_testEvent_1
    ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
    ON COMPLETION PRESERVE ENABLE
    DO
        UPDATE _T_test SET col= 2 where ValidityDate < now();
2. 每月第一天凌晨1点开始执行数据更新(使用存储过程):
CREATE EVENT E_testEvent_2
    ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)
    ON COMPLETION PRESERVE ENABLE
    DO
    BEGIN
        CALL P_testProcedureName();
    END
3. 每季度第一天凌晨1点开始执行数据更新:
CREATE EVENT E_testEvent_3  
    ON SCHEDULE EVERY 1 QUARTER STARTS DATE_ADD(DATE_ADD(DATE( CONCAT(YEAR(CURDATE()),'-',ELT(QUARTER(CURDATE()),1,4,7,10),'-',1)),INTERVAL 1 QUARTER),INTERVAL 2 HOUR)
    ON COMPLETION PRESERVE ENABLE
    DO
        UPDATE _T_test SET col= 2 where ValidityDate < now();
【一些Event相关语句】:
1. 查看是否开启定时器
SHOW VARIABLES LIKE '%sche%';
2. 开启定时器 0:off 1:on
SET GLOBAL event_scheduler = 1;

msyql make源码安装
    [root@ rhel5~]groupadd mysql
    [root@ rhel5~]useradd -r -g mysql mysql
    /home/server/msyql

    cmake -DCMAKE_INSTALL_PREFIX=/home/server/msyql -DMYSQL_DATADIR=/home/server/msyql/data -DMYSQL_USER=mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DEXTRA_CHARSETS=all -DDEFAULT_COLLATION=utf8_general_ci

    [root@ rhel5 mysql-5.6.10]#make
    [root@ rhel5 mysql-5.6.10]#make install


    3.1.5设置目录权限
    [root@ rhel5~]# cd /opt/server/mysql
    [root@ rhel5 mysql]# chown -R root:mysql .
    [root@ rhel5 mysql]# chown -R mysql:mysql data


    3.1.6初始化系统数据库
    [root@ rhel5 mysql]# cd /opt/server/mysql
    [root@ rhel5 mysql]# scripts/mysql_install_db --user=mysql
    [root@ rhel5 mysql]# rm /etc/my.cnf

    重新创建/etc/my.cnf 添加如下内容
     [mysql]
    [client]
    socket = /tmp/mysql.sock
    #在这里写上你的mysql.sock的正确位置,通常不是在 /tmp/ 下就是在 /var/lib/mysql/ 下
    或者直接用下面这个my.cnf文件

    注意将 pid-file="/opt/server/mysql/data/appserver.pid" 这个配置改成实际路径


    3.4开机自启动
    如果执行过步骤3.1.8,此cp命令步骤可省略,直接从chmod步骤执行。
    服务文件复制到init.d下,并改名为mysql
    cp /opt/server/mysql/support-files/mysql.server /etc/init.d/mysql
    chmod +x /etc/init.d/mysql    赋予可执行权限
    chkconfig --add mysql        添加服务
    chkconfig --list             显示服务列表



mysql 源码安装后 服务启动方式
    cp /opt/server/mysql/support-files/mysql.server /etc/init.d/mysql
    chmod +x /etc/init.d/mysql    赋予可执行权限
    chkconfig --add mysql        添加服务
    chkconfig --list             显示服务列表
    如果看到mysql的服务,并且3,4,5都是on的话则成功
    如果是off,则键入chkconfig --level 345 mysql on
 修改mysql端口问题
    如果你开启了selinux,mysql会无法启动,你会在日志中看到以下错误
    [ERROR] Can't start server: Bind on TCP/IP port: Permission denied
    [ERROR] Do you already have another mysqld server running on port: 3308
    那么,你需要关掉selinux,不想重启服务器,而关掉selinux,使用以下命令
    /usr/sbin/setenforce 0
    修改linux下mysql端口时候报错:
    Can't start server: Bind on TCP/IP port: Permission denied
    需要修改: vi /etc/selinux/config
    SELINUX=disabled
    然后重启服务器即可

RPM  mysql的几个重要目录
    (a)数据库目录
    /var/lib/mysql/
    (b)配置文件
    /usr/share /mysql(mysql.server命令及配置文件)
    (c)相关命令
    /usr/bin(mysqladmin mysqldump等命令)
    (d)启动脚本
    /etc/rc.d/init.d/(启动脚本文件mysql的目录)

你可能感兴趣的:(mysql 草稿)