linux下安装MySQL
https://www.cnblogs.com/bookwed/p/5896619.html
https://www.cnblogs.com/duanrantao/p/8988116.html
https://www.cnblogs.com/bookwed/p/5896619.html
网页资料
安装环境
CentOS7 mysql-5.5.62-linux-glibc2.12-x86_64.tar
安装前的准备
特别注意的是一个阶段配置一个快照如果发现GG还可以回退
安装虚拟机成功配置一下 安装mysql配置一下等等。。总之你越是上心到后面你越轻松。
主从复制原理:
主从复制就是通过主的二进制日志文件 通过io传输到从 然后进行数据同步中间涉及到事务的回滚
sync_binlog=1: Mysql开启bin-log日志使用bin-log时,默认情况下,并不是每次执行写入就与硬盘同步,这样在服务器崩溃时,就可能导致bin-log最后的语句丢失。可以通过这个参数来调节,sync_binlog=N,使执行N次写入后,与硬盘同步。1是最安全的,但是也是最慢的。
如果用到innode 存储引擎:
innodb_flush_logs_at_trx_commit=ON(刷写日志:在事务提交时,要将内存中跟事务相关的数据立即刷写到事务日志中去。)
innodb_support_xa=ON (分布式事务:基于它来做两段式提交功能)
sync_master_info=1:每次给从节点dump一些事件信息之后,主节点的master info 信息会立即同步到磁盘上。让从服务器中的 master_info 及时更新。
总之就是主从之间通过二进制日志文件进行数据传输
开始MySQL安装 两台虚拟机安装效果都要能够启动
Mysql的搭建(不建议网上在线下载安装包)
1.解压mysql安装包到 /usr/local/mysql
tar
-zxvf mysql.................
复制到local底下的mysql目录
cp
-r mysql-5.6.33-linux-glibc2.5-x86_64
/usr/local/mysql
2.
#添加用户组
groupadd mysql
#添加用户mysql 到用户组mysql
useradd
-g mysql mysql
3.进入到mysql的安装目录
cd /usr/local/mysql
新建一个data文件夹 用来存储数据
mkdir
.
/data/mysql
4.修改数据库权限 chown -R mysql:mysql ./
5.初始化数据库
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
6.添加启动服务
cp support-files/mysql.server /etc/init.d/mysqld
7.修改启动脚本
vi /etc/init.d/mysqld
8.修改一个启动服务的地址 一个data的文件路径
service mysql restart 启动mysql
9.进入到mysql目录,执行添加MySQL配置的操作
cp support-files/my-medium.cnf /etc/my.cnf
或:
cp support-files/my-default.cnf /etc/my.cnf
10.配置环境变量
11.启动 完成!
安装教程网上多的很。。。。。
chown -R mysql:mysql mysql
给整个mysql目录权限
这就完了????
肯定没有
主要这里说明一下安装的坑 只有走过千山绿水 才能万古长存。。。。。。
下面是遇到的坑:
1.Can't connect to local MySQL server through socket '/tmp/mysql.sock'
不能连接mysql 这是远程连接的坑 不是防火墙就是权限,密码
2. ERROR! The server quit without updating PID file (/var/lib/mysql/master.pid).
常见的错误:https://www.cnblogs.com/wangshaojun/p/5065298.html
主要原因是配置文件 。
3.error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
这是mysql没有日志文件 需要创建一个日志文件目录和一个.log文件
4.远程连接报错 错误码1130 更改linux中mysql中的user表
加一个host为% 后面的 为root
https://blog.csdn.net/liubingger/article/details/80680266
原因:远程连接需要你在user表中加一个谁都可以连接进来,谁都可以操作的权限。
- CentOS7的防火墙 他与其他版本的CentOS不一样
CentOS7中需要使用firewalld来关闭防火墙
参考下面链接https://www.cnblogs.com/moxiaoan/p/5683743.html
- 发现启动mysql用service MySQL start 启动不了可以尝试
在mysql安装目录下
./support-files/mysql.server start 启动
后面加stop就是停止
7.如果进入mysql找不到发现找不到命令的情况
ln -s /usr/local/mysql/bin/mysql /usr/local/bin
因为系统默认会查找/usr/bin下的命令,由于mysql没有在这个目录下,所以出现not found。因此需要做一个软连接到/usr/bin目录下。
- 各种配置都配好了 网络状态也可以连接 发现还是远程连接不上的
网上的各种傻逼四连:
一、检查数据库是否打开
二、测试能否ping通数据库主机(另检查数据库是否可以远程连接)
三、检查数据库主机防火墙是否屏蔽了3306端口
四、查看一下数据库的mysql库中user表是否给予了授权
- Ifconfig 查看本机ip 如果发现查看不了了
ip addr 是CentOS7中新查看ip的方法
- 启动mysql的时候 提示你重定向的信息
还是环境变量的问题 找不到命令的也是
- 如果安装失败 你想铲掉重新再装 ,你需要删除所有有关mysql的文件
如果你只删了mysql安装目录 抱歉 你再装一次肯定GG!!!
原因:中间涉及到了有一些配置文件 比如my.cnf的关联文件 影响的是你下次安装失败!
- 错误码,错误提示会给你一个错误的码 下面是我安装遇到的 如果没有你遇到的你也可以百度
1045 不是你用户名错就是密码错 尝试用andmin
2003 mysql没启动!
10060 配置问题 user表 和mysql权限
42000 登陆的时候用了匿名用户
在my.cnf 中配置 skip-grant-tables 可以跳过mysql的权限验证
28000 就是密码错误之类的 推荐跳过验证
1201 错误 无法初始化主信息结构
解决办法:stop slave; 中间放更改语句 reset slave;
2013 重启试一下
- my.cnf文件设置以下属性可以跳过mysql的程序验证,但是你靠这个去更改mysql的配置或者表结构,或者配置主从。他会提示你跳过验证的不让更改。
如果你验证登陆会等到一个“”的账号 你会发现你use mysql的库都进不去
skip-grant-tables
解决方法:直接用客户端连接,到mysql的user表中将其中一条user为root的记录的host改成localhost,然后保存就好了;
配置主从
配置主从的时候 网上资源一大把。主要分两块
Mysql5.5之前 和5.5之后 配置方法不一样 一个是在配置文件中更改 一个是进入mysql之后进行更改。具体的方法就多试几次。看懂一些配置文件搭建非常简单。
个人建议参照多个搭建方法来对照起来
https://blog.51cto.com/13910274/2172910 一整套流程
https://blog.csdn.net/daicooper/article/details/79905660 最简单的一个
https://www.jianshu.com/p/b0cf461451fb
主要介绍一下坑:
1.有时候发现你保存文件无法保存的情况!
一般保存文件wq就可以直接保存 有时候会让你加wq!
这样都保存不了的用: w ! sudo tee % 强制保存 不过多半不好使!
第二种方法 需要更改用户权限
Su root 切换到root的时候 发现权限认证错误
你需要重新定义密码: sudo passwd root
更改新的密码之后就可以切换到root了
2.如果你的虚拟机关机或挂起状态 网络丢失!
设定里面找不到网络连接的方式 而且百度的时候需要你配置各种静态ip
更改各种设定和配置!如果你之前没有配置过这些东西!
个人建议:
- 你先把虚拟机关了!
如果重启之后还是这样 回退快照吧。
如果你没快照,恭喜GG! 铲掉重装!
2.回退到快照你会发现你的网络状态还是那样! 你就进行下面操作
之后你会发现??
好了!
然后会更改你的ip地址 需要重新设定
3. Mysql安装完成。全程连接可以连接上 但是mysql-uroot-p找不到命令
根本原因:没有配置mysql的环境变量
可以在bin目录下./mysql -uroot -p 来登陆
4.错误Ignoring query to other database
最傻逼的错误 自己百度。
5.Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
报这个错,他的意思是你配置文件瞎了眼睛乱**写。报错了
- 最大的一个坑
主里面设置server_id = 1 从里面设置server_id = 2
你就会发现怎么配置好了还是启动不了
查看 报错信息 在data文件夹下 找一个.err结尾的 日志文件
查看文件得知 报错信息是server-id 从不能和主一样。。。。。
你就会发现在my.cnf文件中最角落一块
文件默认自带了一个server-id的属性 你要给删掉 不然一直
slave_IO_running : no
只有两个都是yes了才算配置成功了
最好的办法就是:若失败查看mysql错误日志中具体报错详情来进行问题定位
然后测试,网上测试方法一大把
最简单的测试你就通过可视化工具在主里面新建一张表,然后到从库里疯狂刷新。3秒钟不出来 你就可以开始砸电脑
遇到坑了就百度,遇到错误看日志。
--如果有有我没讲解到了你还不知道怎么解决 可以评论出来 。