0 安装MySQL
DNF是linux系统的另一个软件安装解决方案,相对于yum,对于依赖有更好,更高效的解决方案。对于开发者来说,也更加友好,而且对于Python也有更好的支持;redhat8已经默认有DNF,只需要修改源就可以直接使用
1、Yum没有API文档。这意味着开发者需要做更多的工作。Yum开发者写一个调用函数都需要查看Yum的代码库,使开发变得缓慢。
2、Python3。Fedora将会过渡到Python3,但Yum却没有这个能力,而DNF既可以使用Python2,也可以在Python3环境下运行。
3、依赖解决能力长期是Fedora软件包管理的阿喀硫斯之踵。DNF使用基于SAT的依赖问题解决方法,与SUSE和OpenSUSE的Zypper类似。
#下载源文件
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
#配置DNF,耗时比较久.一般非必须
sudo dnf update
配置好源后,记得查看一下.
- rpm安装MySQL
## 查看有没有安装MySQL
rpm -qa | grep -i mysql
find / -name mysql
## 删除存在的MySQL文件
rm -rf 查出的文件1 文件2
- 去官网下载相应的rpm包:https://dev.mysql.com/downloads/mysql/
或者使用: 搜狐镜像http://mirrors.sohu.com/mysql/ - 上传到/usr/local/src文件夹,进行安装mysql
按照以下顺序进行安装,因为它们之间存在依赖关系
common --> libs --> clients --> server
遇到了需要安装下面2个依赖的问题
dnf install ncurses-compat-libs
dnf install perl-Getopt-Long
- 设置密码
查看初始密码 grep -i password /var/log/mysqld.log
// 登录后 set password = password(‘密码’),这个只能本地访问
修改密码 sudo mysql_secure_installation - 错过第4步,可以
flush privileges; //刷新系统权限表
ALTER user ‘root’@‘localhost’ IDENTIFIED BY ‘你的密码’;
出错时尝试Linux 通过RPM包安装 MySQL 8.0第2条 - mysql 解决密码强度的问题 Your password does not satisfy the current policy requirements
set global validate_password_policy=LOW; - 跳过授权
vi /etc/my.cnf
在[mysqld]下面添加跳过授权命令 - 登录后的授权访问
1. 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;
2、mysql>FLUSH PRIVILEGES
//修改生效
skip-grant-tables
重启服务
service mysqld restart
systemctl start mysqld
systemctl status mysqld
1. 主从复制
MySQL主从复制实现,主从、主主、主从从
MySQL主从复制原理、半同步操作步骤及原理
- 修改主服务器master:
#vi /etc/my.cnf[mysqld] # 日志文件格式 binlog-format=ROW # [必须]启用二进制日志. 名字为mysql-bin log-bin=mysql-bin #[必须]服务器唯一ID,默认是1,一般取IP最后一段 server-id=222 # 要实现主从复制的数据库,这里是ddm binlog-do_db=ddm ```
在主服务器上建立帐户并授权slave:
mysql> GRANT REPLICATION SLAVE ON . to ‘root’@’%’ identified by ‘mysql3306’; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。192.168.145.% 授权给145段内所有用户
2. 修改从服务器slave:
#vi /etc/my.cnf
[mysqld]
#不是必须]启用二进制日志
log-bin=mysql-bin
# 日志文件格式
binlog-format=ROW
#[必须]服务器唯一ID,默认是1,一般取IP最后一段
server-id=226
# 双主互相备份(表示从服务器可能是另外一台服务器的主服务器). 只作为从机可以不写
log-slave-updates=true
- 重启两台服务器的mysql
service mysqld restart
或
systemctrl mysqld restart
或
/etc/init.d/mysql restart - 登录主服务器的mysql,查询master的状态
mysql> show master status;
±-----------------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±-----------------±---------±-------------±-----------------±------------------+
| mysql-bin.000001 | 154 | ddm | | |
±-----------------±---------±-------------±-----------------±------------------+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
File: 日志文件名
Position: 文件名所处的位置(偏移量)
Binlog_Do_DB: 要实现主从复制的数据库
- 配置从服务器Slave:
mysql>change master to master_host=‘192.168.15.1’,master_port=3306,master_user=‘root’,master_password=‘mysql3306’,master_log_file=‘mysql-bin.000001’,master_log_pos=154; //注意不要断开,308数字前后无单引号。
Mysql>start slave; //启动从服务器复制功能
2. Navicat 连接不上问题
```
1. 防火墙问题 2. 端口未开放 3. 未授权
firewall-cmd --zone=public --add-port=3306/tcp --permanent
2.重新加载防火墙
firewall-cmd --reload
2. 授权给客户端
# with grant option 不仅仅授予修改的权限,还授予权限的权限
grant all privileges on *.* to root@'%' identified by 'mysql3306' with grant option;