分类 笔记 下的文章

centos7.0安装mysql5.7

下载mysql源的安装包
mysql源地址
安装源

rpm -ivf mysql-community-release-el7-5.noarch.rpm

安装

yum install mysql-server

然后按下Y就能安装成功了
但是我安装之后不能启动,运行了一下

mysql_secure_installation

会出现一些设置,root密码设置什么的,设置完成之后mysql自己就启动了
但是这个安装的是5.6版本的mysql,我想安装5.7的

yum-config-manager --disable mysql56-community
yum-config-manager --enable mysql57-community-dmr

然后更新一下·

yum update

就是5.7了

php安装5.6

来自于http://www.zabbix.cc/technic/1420/
配置yum源
追加CentOS 6.5的epel及remi源。

# rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

以下是CentOS 7.0的源。

yum install epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

使用yum list命令查看可安装的包(Packege)。

# yum list --enablerepo=remi --enablerepo=remi-php56 | grep php

安装PHP5.6
yum源配置好了,下一步就安装PHP5.6。

# yum install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof

用PHP命令查看版本。

[root@www ~]# php --version
PHP 5.6.9 (cli) (built: May 15 2015 09:31:38) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2015, by Zend Technologies
    with Xdebug v2.3.2, Copyright (c) 2002-2015, by Derick Rethans

在这里安装的版本是PHP5.6.0,细心的用户可能已经发现ZendGuardLoader变成Zend OPcahe了。

对从PHP5.5开始PHP代码缓存从APC变成了Zend OPcache了。

mysql触发器记录

一张表t1,两个字段,id和name字段,要实现一个功能,在往这张表里面插入数据的时候,如果表中有与插入的数据name字段相同的字段,则更新id字段,
之前没写过,不过大概记得以前学习mssql的时候有个东西可以早对表进行inser update delete的时候触发一些动作
下面是代码:

DELIMITER |
CREATE TRIGGER test1 BEFORE INSERT on `test1` FOR EACH ROW 
BEGIN 
DELETE FROM `test1` WHERE t1_name=new.t1_name;
END
|
delimiter ;

做到这个需求,需要用到了一个临时表。。
开始用的是

DELIMITER |
CREATE TRIGGER insert_updata BEFORE INSERT on `key_temp` FOR EACH ROW 
BEGIN 
DECLARE temp INT(3);
SET temp=(SELECT COUNT(*) FROM `key_gjc` WHERE key_name=new.key_name);
IF temp>0 THEN 
delete from `key_gjc` WHERE f=new.f;
INSERT INTO `key_gjc` (a,b,c,d,e,f) VALUES (new.a,new.b,new.c,new.d,new.e,new.f);
END IF;
END
|
delimiter ;

这种方法就实现了需要的效果,但是后来出现了一个问题,因为后来表又加了一个字段g,开始插入的时候,这个字段是空的,譬如该条记录如下

a         b       c      d       e           f             g
张三   22    男     111   30kg     3000    null

但是可能会对这条记录的g字段进行更改,譬如更改之后的记录为
```

a         b       c      d       e           f             g
张三   22    男     111   30kg     3000    小说

那么,如果再对key_temp表插入数据的时候,会触发触发器,根据触发器的逻辑,会实现更新,但是g字段的值就丢失了,所以进行了改进,于是又稍稍接触了下mysql的变量定义和流程控制语句~~~~,如下,有个问题,在if里面的sql语句,一定要记得结尾的分号啊,因为这个调了半天。。。。。。

DELIMITER |
CREATE TRIGGER insert_updata BEFORE INSERT on `key_temp` FOR EACH ROW 
BEGIN 
DECLARE temp INT(3);
SET temp=(SELECT COUNT(*) FROM `key_gjc` WHERE key_name=new.key_name);
IF temp>0 THEN 
UPDATE `key_gjc` SET a=new.a,b=new.b,c=new.c,d=new.d,e=new.e WHERE f=new.f;
ELSE 
INSERT INTO `key_gjc` (a,b,c,d,e,f) VALUES (new.a,new.b,new.c,new.d,new.e,new.f);
END IF;
END
|
delimiter ;

mysql不能远程登录

1、改表法

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"

  mysql -u root -p

mysql>use mysql;

  mysql>update user set host = '%' where user = 'root';

  mysql>select host, user from user;

2、授权法

在安装mysql的机器上运行:

1,登陆mysql

d:\mysql\bin\>mysql -h localhost -u root

//这样应该可以进入MySQL服务器

2,设置权限

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION

//赋予任何主机访问数据的权限
例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码

  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

3,刷新权限

mysql>FLUSH PRIVILEGES

//修改生效

4

  mysql>EXIT

退出MySQL服务器,这样就可以在其它任何的主机上以root身份登录

转载自:http://wanwentao.blog.51cto.com/2406488/584075

linux(centos 7.0)设置mysql自动备份

系统:centos7
mysql :5.7.7
直接在命令行执行

 mysqldump -u root -proot `test1` > /root/mysql.back;
 mysqldump: [Warning] Using a password on the command line interface can be insecure.

会出现一个警告(但还是备份成功了)
解决办法是在用户的家目录添加一个.my.cnf文件,里面写上用户名和密码

[mysqldump]
user=root
password=zhangjin

然后再使用

mysqldump `test1` > /root/mysql.back;

就不会出现警告了

定时备份
写了一个shell

#!/bin/bash
db_name="test1";
file_name="/root/mysql_dump_file/"${db_name}$(date +%Y%m%d%H)".back";
/usr/bin/mysqldump $db_name >  $file_name;

定时执行,我这里是测试,分分钟备份

crontab -e
然后写上
* * * * * /root/mysqldump.sh

给一下文件权限,不然没发执行

chmod o+x /root/mysqldump.sh

然后就ok了

mysqlnd cannot connect to MySQL 4.1+ using the old insecure【解决方法】

【MySQL】mysqlnd cannot connect to MySQL 4.1+ using the old insecure【解决方法】

mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD(‘your_existing_password’). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file. SQL 错误代码: “7335941”.

是采用兼容格式的密码,而 php5.3的php_mysql; php_pdo_mysql 采用的是增强的密码,所以导致两者不匹配,最方便的方式还是更新db的设置,取消 old_passwords
然后在 mysql.mysql.user,更新所有用户的密码, 如:

SET old_passwords =0;
UPDATE mysql.user SET Password =PASSWORD('testpass') WHERE User='testuser' limit 1;
SELECT LENGTH(Password) FROM mysql.user WHERE User='testuser';
FLUSH PRIVILEGES;

转载自:http://lampblog.org/1430.html