MySQL部署文档
日期:2017-8-14
环境:Linux 2.6.32-504.el6.x86_64(RedHat) 数据库版本:mysql-5.7.19
说明安装mysql数据库需要root用户
1.登录到服务器创建mysql用户,执行命令:adduser mysql /passwd mysql 设置密码;
2.从MySQL官网下载安装包mysql-5.7.19-linux-glibc2.12-x86_64 将文件通过FTP上传至服务器目录:
解压安装包:tar -xvf mysql-5.7.19-linux-glibc2.12-x86_64 3.创建目录 /var/lib/mysql/data 用于存放mysql数据库初始化数据;
4.创建目录/var/lib/mysql/share/,讲安装包中
mysql-5.7.19-linux-glibc2.12-x86_64/share/englis/errmsg.sys 备份至 /var/lib/mysql/share/目录下:cp errmsg.sys
/var/lib/mysql/share/ ;再将该文件备份至/usr/share/mysql/目录下;将
mysql-5.7.19-linux-glibc2.12-x86_64/support-files/mysql.server 拷贝至 /etc/init.d/mysql中;
5.mysql-5.7.19-linux-glibc2.12-x86_64/bin目录下: ./mysqld_install_db --user=msql --datadir=/var/lib/mysql/data
--basedir=/var/lib/mysql 初始化数据库;
然后执行:./mysqld 启动数据库;如启动中报错可参照附件解决; 6.如果上一步执行没有报错,说明数据库启动成功,可用以下命令查询数据库状态: /etc/init.d/mysql status
7.登录数据库:mysql -umysql(用户名) -pmysql(密码) 此时会报错因为数据库会校验ip和用户,此时需要修改/etc/my.cnf文件:在[mysqld] 后面追加 skip-host-cache skip-name-resolve skip-grant-tables 然后重启数据库:停止命令:/etc/init.d/mysql stop 启动命令:到软件目录下执行 ./mysqld
8.部署完成后需要修改用户密码,否则在之后的使用会出现连接失败的问题需要重启数据库才可以重新登录,所以需要修改数据库用户密码,执行命令如下: Mysql -u root -p 密码 Mysql>use mysql --修改密码
Mysql>update user set authentication_string=password(‘密码’) where user=‘root’ Mysql>flush privileges; 修改用户期限
Mysql>update user=’root’;
user set password_expired=’N’where
Mysql>flush privileges; Mysql>quit;
重启数据库,再次登录就正常了。
错误记录:
1.mysqld:table’mysql.plugin’dosen’t exist; 解决方案:修改my.cnf文件,讲datadir的值替换至: (1)/var/lib/mysql/data;
2.[ERROR] can’t find error-message file ‘/user/loacl/mysql/share/errmsg.sys’; 解决方案:创建该目录,讲
mysql-5.7.19-linux-glibc2.12-x86_64/share/englis/errmsg.sys 文件复制到该目录下;
3.ERROR 1045(28000):Access denied for user ‘’.... 解决:这个问题是由于你的登录密码与库表的不一致造成的,此时需要在 修改/etc/my.cnf ,加上skip-grant-tables 跳过授权的表即可登录;
4.ERROR 1862(HY000):your password has expired...
解决:报这个错是由于修改密码造成的,提示密码过期此时需要修改user表的password_expired的值为‘N’即可;
5.ERROR 1130 host ip is not allowed to connect this MYSQl server
解决:mysql -u root -p Mysql>use mysql
Mysq>update user set host=‘%’where user=’root’; Mysql>flush privileges; Mysql>quit;即可解决;
6.执行语句时报错:[err] 1055 -EXpression #1 解决:在/ect/my.cnf 中加入:sql_mode=‘’;
内容是在查询窗口执行:select @@sql_mode; 的执行结果去掉only_full_group_by; 7.执行语句报ERR1067,
解决:执行语句 select @@sql_mode; 只需要将结果只保留:
NO_ENGINE_SUBSTITUTION,STRAICT_TRANS_TABLES就可以了 8;修改SQL_MODE值: 命令行执行: set
@@global.sql_mode=’NO_ENGINE_SUBSTITUTION,STRAICT_TRANS_TABLES’这样是删除数据库操作的校验,防止出错! 9.使用 /etc/init.d/mysql start 命令无法启动
解决:在my.cnf中添加mysql安装目录 basedir=**/**; 10.设置mysql不区分表名大小写:修改配置文件my.cnf,在[mysqld]下加入:lower_case_table_names=1,重启mysql即可;
MYSQL互为主从备份设置 1.修改配置文件my.cnf,添加以下内容
log-bin=mysql-bin #开启二进制日志 server-id=1 #两台机器不相同即可
#binlog-ignore-db=mysql #设置不被记录的数据库 #replicate-ignore-db=mysql #不被同步的数据库 #replicate_ignore_table=test.abc #同步忽略的表
replicate_wild_ignore_table=mysql.% #同步忽略的表(增强版去除上面的一些bug) replicate_wild_ignore_table=test.abc log-slave-updates slave-skip-errors=all
relay_log=relaylog-bin #开启中继日志 relay_log_index=relaylog_bin_index 2.重启mysql
3.创建用户并给replication slave 权限
mysql> grant replication slave,reload,super on *.* to slave@”192.168.123.%” identified by “slave”;
4. 检查主服务器状态(DB1,DB2)
DB1
mysql> show master status;
DB2
mysql> show master status;
Mysql部署文档(Redhat)



