Mysql 使用帮助

yum 安装

安装包
 yum install -y mysql mysql-server php-mysql
移除已有的包
yum remove mysql mysql-server php-mysql
shell

编码设置

查看编码
SHOW VARIABLES LIKE 'character_set_%';
一、编辑MySql的配置文件
MySql的配置文件Windows下一般在系统目录下或者在MySql的安装目录下名字叫my.ini,可以搜索,Linux下一般是 /etc/my.cnf

--在 [mysqld] 标签下加上三行
default-character-set = utf8
character_set_server = utf8
lower_case_table_names = 1 //表名不区分大小写(此与编码无关)

--在 [mysql] 标签下加上一行
default-character-set = utf8

--在 [mysql.server]标签下加上一行
default-character-set = utf8

--在 [mysqld_safe]标签下加上一行
default-character-set = utf8

--在 [client]标签下加上一行
default-character-set = utf8

Linux源码安装

(1)先安装cmake(mysql5.5以后是通过cmake来编译的)
tar -zxv -f cmake-2.8.4.tar.gz
cd cmake-2.8.4
./configure
make
make install
(2)创建mysql的安装目录及数据库存放目录
mkdir -p /usr/local/mysql                 //安装mysql 
mkdir -p /usr/local/mysql/data            //存放数据库
(3)创建mysql用户及用户组
groupadd mysql
useradd -r -g mysql mysql
(4)安装mysql
tar -zxv -f mysql-5.5.10.tar.gz
cd mysql-5.5.10
root@ rhel5 mysql-5.5.10]#cmake . 
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/usr/local/mysql/data
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci 
-DEXTRA_CHARSETS=all 
-DENABLED_LOCAL_INFILE=1


make
make install
参数说明:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql        //安装目录

-DINSTALL_DATADIR=/usr/local/mysql/data         //数据库存放目录

-DDEFAULT_CHARSET=utf8                        //使用utf8字符

-DDEFAULT_COLLATION=utf8_general_ci            //校验字符

-DEXTRA_CHARSETS=all                            //安装所有扩展字符集

-DENABLED_LOCAL_INFILE=1                        //允许从本地导入数据
注意事项: 重新编译时,需要清除旧的对象文件和缓存信息。
make clean
rm -f CMakeCache.txt
rm -rf /etc/my.cnf
(1)设置目录权限
cd /usr/local/mysql
chown -R root:mysql . //把当前目录中所有文件的所有者所有者设为root,所属组为mysql
chown -R mysql:mysql data
(2)将mysql的启动服务添加到系统服务中
 cp support-files/my-medium.cnf /etc/my.cnf
(3)创建系统数据库的表
 cd /usr/local/mysql
 scripts/mysql_install_db --user=mysql
(4)设置环境变量
 vi /root/.bash_profile

在PATH=$PATH:$HOME/bin添加参数为:

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/lib

source /root/.bash_profile
(5)手动启动mysql
 cd /usr/local/mysql

 ./bin/mysqld_safe --user=mysql &   //启动MySQL,但不能停止
启动日志写在此文件下:/usr/local/mysql/data/localhost.err 关闭MySQL服务
 mysqladmin -u root -p shutdown  //这里MySQL的root用户还没有配置密码,所以为空值。需要输入密码时,直接点回车键即可。
(6)另一种简单的启动mysql的方法(mysql已经被添加到系统服务中) 注意:在/usr/local/mysql/share/mysql/mysql.server中,而本系统中,mysql.server在/usr/local/mysql/support-files/mysql.server中。 拷贝到 /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

service mysqld start
service mysqld start  
service mysqld stop
service mysqld restart
(7)创建用户并授权 创建管理员
mysql -u root mysql
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
GRANT all privileges ON *.* TO '用户名'@'%' WITH GRANT OPTION;
flush privileges;
创建授权某一数据库
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
GRANT CREATE,DROP,SELECT,INSERT,DELETE,UPDATE,ON 数据库名称.* TO '用户名'@'%';
flush privileges;
若还不能进行远程连接,则配置防火墙 /
/etc/rc.d/init.d/iptables stop
注:如果不能远程连接,出现错误mysql error number 1130,则加入下面语句试试:
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '******' WITH GRANT OPTION;

主从配置

在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一。尤其是在大规模系统中,数据库集群已经成为必备的配置之一。集群的好处主要有:查询负载、数据库复制备份等。 MySQL数据库支持数据库的主从复制功能,因此在集群方面具有其独特的优势。众多国内外大型网站架构体系中,均采用了MySQL的主从数据库配置来实现查询负载、数据库热备等功能。本人在实际的Web项目中也涉及到这一需求,在此将如何配置实现做个简单小结。

1、实验环境

2、主数据库配置

任何一台MySQL数据库服务器都可以配置为集群主服务器,打开MySQL的配置文件,在配置文件中加入下面两行:
server-id = 1
log-bin = binlog_repl
binlog-do-db = test     //设置需要同步的数据库,如果需要设置多个,则加入多条这行语句。
注:MySQL是通过二进制的日志文件来进行主从数据库复制的,所以必须开启日志功能,即上述的log-bin;另外在集群中,每台数据库服务器都需要指定一个唯一ID,这里我们指定为1。 给主数据库授权一个可以进行复制的用户,执行如下命令:
    grant replication slave on *.* to 'slave'@'%' identified by '123';
执行成功后,重启MySQL。
      mysql>flush tables with read lock;
< code >  备份数据库,传输到从数据库的数据目录下/var/lib/mysql;
File Position Binlog_Do_DB Binlog_Ignore_DB
binlog_repl.000001 106 test
记录下File和Position的值。

3、从数据库配置

在mysqld下加入如下代码:
      server-id=2
      master-host=192.168.1.189
      master-user=slave
      master-password=123
保存后,重启mysql服务。 在mysql下执行slave stop命令,停止slave服务;
mysql> change master to
-> master_host='192.168.1.189',
-> master_user='slave',
-> master_password='123',
-> master_log_file='binlog_repl.000001',
-> master_log_pos=106;
注意:这里的masterlogfile,masterlogpos的值要和master的值一致。否则会无法同步。 执行slave start命令,启动服务。

4、验证同步

从数据库下运行show slave status \G; 如果能看到:
       Slave_IO_Running: Yes
       Slave_SQL_Running: Yes
说明已经成功启动了主从数据库的数据同步。 在主数据库中执行插入语句 insert into user values('kangqing','1234567890'); 在从数据库中执行查询,可以看到主数据库插入的数据已经同步到从数据库表中。

估计是权限问题

解决方法: 修改/var/lib/mysql文件夹的权限,对mysql.mysql用户赋予读写权限即可。 chown -R mysql:mysql /database/mysql chmod +r+w+x -R /database/mysql linux 下备份
#!/bin/bash
backDate=`date +%Y-%m-%d_%H_%M`
backDateFile=/database/mysql/sql/mysql.$backDate.7z
testSQL="select(abs(-9))"
shellCmd="mysql -h 127.0.0.1 -uroot --database=test -e $testSQL"
$shellCmd
result=$?
if [ $result -eq 0 ]
then
    if [ -f $backDateFile ]; then 
             rm -f $backDateFile        
             echo "delete old "$backDateFile
            else 
            echo "to "$backDateFile
    fi 
    mysqldump --all-databases --events --ignore-table=mysql.events -h 127.0.0.1 -uroot | 7za a -aoa -mx=9 -m0=PPMd:mem=256M -si $backDateFile
    cd /database/mysql/sql
    /database/mysql/bin/tranftp.sh mysql.$backDate.7z
    exit 0;
else
    echo "not start mysql"
     exit 1;
fi
windows 下备份
set bakfile=d:\website\database\mysql.%date:~0,10%.sql.7z
del %bakfile%
d:\mysql\bin\mysqldump --all-databases -h localhost -uroot -p密码 | 7z a -aoa -mx=9 -m0=PPMd:mem=256M -si %bakfile%
定时任务
10 2 * * 2,4 /database/mysql/bin/cleandump.sh
10 2 * * 1,5 /database/mysql/bin/mydump.sh