分类 Mysql 下的文章

首先写一个备份脚本:

backup.sh

#!/bin/bash
#设置文件名中的时间格式
date=`date +%Y_%m_%d`
#mysqldump命令需使用绝对路径否则无法正确执行
/usr/local/mysql/bin/mysqldump -uusername -ppassword database | gzip > /home/mysql/backup/database_$date.sql.gz

添加可执行权限:

chmod +x backup.sh

添加定时执行脚本:

#每日0点执行备份
0 0 * * * root /bin/bash /home/mysql/backup.sh

配置Mysql主从可以做热备、读写分离,是提高网站性能、提高数据安全性的比较有效的方式,而且配置简单,所以笔者在网站因业务逻辑需要大量用到数据库操作而性能不佳时,首先想到要做主从,其实还有别的方案的,比如做缓存,但是做缓存要改代码所以等之后再应用,先把主从给配置了。以下是做Mysql主从的关键步骤:
1、准备两个服务器,并且配置并启动同版本的mysql服务,其中,一个主(master)一个从(slave);
2、在master数据库中创建数据库,并将数据库同步到slave数据库,这里我采用了在master中导出sql文件然后在slave中通过scp命令获取后导入的方式;
3、在master中配置一个slave访问账户:

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'52.80.193.101' IDENTIFIED BY 'password';

4、在master数据库配置中添加以下配置:

server-id=1
log-bin=mysql-bin --开启日志,并将二进制日志文件设置为mysql-bin
max_binlog_size=104857600--日志文件的最大尺寸
binlog_format=mixed
binlog-do-db=test --这里配置了需要同步的数据库,如果未配置则表示同步所有数据库
binlog-ignore-db=mysql--这里配置了不需要同步的数据库

5、在slave数据库中添加以下配置:

server-id=2
log-bin=mysql-bin
replicate-same-server-id 
replicate-do-db=blog=test -- 指定要同步的数据库
replicate-ignore-db=mysql -- 指定不需要同步的数据库

6、在slave数据库中执行以下命令:

change master to master_host='52.80.193.101',master_user='slave',master_password='password'

7、分别查看master、slave状态:

show master status;--查看master状态,如果之前没有开启二进制日志的话这里显示空,如果已经开启,会有File、Position、Binlog_Do_DB、Binlog_Ignore_DB等字段
-----
show slave status; --查看slave状态,会显示之前的一些配置信息和一些默认信息

8、测试:
1)现在master中创建一个数据表:

create table test_(id int(11));

2)在slave中test数据库下查看是否有test_表

show tabes like 'test_';

如果有则说明test_表同步过来了,即主从复制配置成功!

1、创建用户:


CREATE USER 'username'@'host' IDENTIFIED BY 'password';

2、程序中使用的mysql账号应该遵循最小权限原则,不允许夸库查询,故设置专门的账号供程序使用:


grant select,update,delete,insert on database_name.* to 'username'@'%' identified by 'passwd' with grant option;

设置对一个数据库的全部权限:
grant all privileges on database_name.* to 'username'@'%' identified by 'passwd' with grant option;    

3、设置完后将权限信息从内存中写入数据库:


flush privileges;

4、取消用户权限:


revoke all on *.* from username;

1、


CREATE DATABASE `database_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

2、


creat table `table_name` (
    `id`  int(11)  unsigned primary key auto_increment;
    `name` varchar(10) not null comment "名字"
)engine=innodb charset=utf8 comment="举个栗子";

配置MySQL:

  (直接下载msi文件或者exe文件安装的可忽略)
基础配置:
 1. 将安装包解压到根目录,如`E:\mysql`;
2. 进入mysql文件夹找到my-default.ini文件,并将文件名改为my.ini;

3.用记事本打开my.ini,找到如图所示项:
这里写图片描述

将basedir的值改为mysql文件夹的路径,将datadir改为mysql文件夹中data文件夹的路径,记住不要添加任何额外字符,不要标点。   
开启MySQL:
此时,打开cmd.exe,输入任何mysql的命令会显示这不是合法命令,因为MySQL服务尚未开启。
4,配置环境变量,在path环境变量上添加bin文件夹的路径;
5,安装mysql服务,在命令行中输入:`mysqld - -install`
6,开启MySQL,在命令行中输入:`net start mysql`
注意:
1,安装和开启服务的时候都要在bin目录里;
2,如果提示“系统错误 5 拒绝访问”,说明权限不够,应该用
-管理员命令提示符-;
3,如果提示“系统错误 2 找不到指定文件”,说明环境变量有问题,再确认bin目录路径与path里的是否相符,如果确认一致后还是有这个错误,就在注册表中把mysql这个项整体删除,再`mysql --remove`,然后回到步骤4;
4,如果提示“系统错误 3 找不到指定文件” ,先把服务卸载了:
`mysqld --remove` 重新安上面步骤安装;

PHPmyadmin配置:

将解压后的文件夹放在网站根目录下,确保在浏览器中输入正确路径后可以访问phpadmin文件夹的index.php 页面。
1,在libraries文件夹中找到config.default.php文件,用记事本打开,分别进行一下操作:

1找到`$cfg['PmaAbsoluteUri'] = ''`,在引号内添加----你本地访问网站时的网址+PHPmyadmin文件夹名+/  
2找到`$cfg['Servers'][$i]['host'] = 'localhost'`;主机名
3找到`$cfg['Servers'][$i]['port'] = ''`,端口号
4找到`$cfg['Servers'][$i]['user'] = 'root'`,你所用的用户名
5找到`$cfg['Servers'][$i]['password'] = ''`,你的用户名的密码
6找到`$cfg['Servers'][$i]['auth_type'] = 'cookie'`,指定需要用户名和密码的验证方式

2,开启MySQL服务,在index页面选择语言,输入刚才配置的用户名和密码。
注意:
1,有可能登录后跳转的页面会出现找不到的情况,那是因为$cfg['PmaAbsoluteUri'] = ''的配置不正确,看着当前显示的网址更在配置调整即可;
2,这里配置的用户名和密码是root用户的,如果在安装MySQL的过程中没有设置密码,就用 mysql>set password =password('密码');先设置。

备注:
使用mysql_connect()语句进行连接数据库时,很可能出现
----PHP Deprecated 和php waring ,
解决办法:

1,用PHPmyadmin添加一个新用户,用这个新用户来对相应数据库建立连接;
2,在`mysql_connect()`语句前加 `@` ,阻止这些非错误的提醒。