您的位置:首页 > 数据库 > MySQL

mysql 笔记

2015-12-21 00:00 603 查看
linux(ubuntu)安装配置

sudo apt-get install mysql-server
按提示输入root新设置密码。

root使用123456(密码)从任何主机连接到mysql服务器配置
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
或指定访问ip
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3'IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
使修改生效,就可以了
常见问题:
1.无法在本地登录mysql(如:#mysql -u root -p -h 192.168.1.11
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解决方法:
1、这时可以使用:mysql -u root -p 登录,进入到mysql后。
mysql> grant all privileges on *.* to 'root'@'localhost' identified by '123456' with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
2.mysql 10061
my.cnf文件bind-address给注释掉
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1

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的目录)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: