一.版本号
1.linux版本
Linux dz2 2.6.32-358.el6.x86_64
2.mysql版本
mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
3.下载地址
https://dev.mysql.com/downloads/mysql/
二.创建用户
1.创建mysql用户
useradd mysql
2.给mysql用户添加密码
passwd mysql
3.添加mysql用户组,组id随意,但不能重复
groupadd -g 333 mysql
4.把mysql用户添加到mysql组中
gpasswd -a mysql mysql
三.查看是否有之前mysql的组件
1.查看是否有mysql组件或者其他的版本
npm -qa |grep -i mysql
2.如果有则通过以下命令删除
npm -e mysql-libs-5.1.66-2.el6_3.x86_64
如果不行可以在命令后面加上--nodeps
npm -e mysql-libs-5.1.66-2.el6_3.x86_64 --nodeps
3.使用以下命令来查看是否还有mysql相关目录,有则进行删除,注意先进入/目录再进行查找
cd /find -name mysql
4.通过rm -rf [目录名]删除查找到的目录即可
四.文件解压
1.解压文件
tar -zxf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
2.将解压后的文件放在刚创建的mysql用户目录下并更名为mysql-5.7.26
mv mysql-5.7.26-linux-glibc2.12-x86_64 /home/mysql/mysql-5.7.26
五.初始化安装(因为我的mysql不是安装在默认位置的,所以在初始化或者启动时要带上配置文件)
1.在/home/mysql目录下创建my.cnf文件
mkdir /home/mysql/my.cnf
2.通过vim /home/mysql/my.cnf编辑文件,并输入以下内容
[mysqld]
bind-address=192.168.25.151
port=3378
user=mysql
basedir=/home/mysql/mysql-5.7.26
datadir=/home/mysql/mysql-5.7.26/data
socket=/home/mysql/mysql-5.7.26/tmp/mysql.sock
log-error=/home/mysql/mysql-5.7.26/data/mysql.err
pid-file=/home/mysql/mysql-5.7.26/data/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
3.保存退出
4.进入mysql-5.7.26目录下的bin目录
cd /home/mysql/mysql-5.7.26/bin
5.初始化
./mysqld --defaults-file=/home/mysql/my.cnf --basedir=/home/mysql/mysql-5.7.26/ --datadir=/home/mysql/mysql-5.7.26/data/ --user=mysql --initialize
6.查看mysql初始密码
vim /home/mysql/mysql-5.7.26/data/mysql.err
7.通过/home/mysql/mysql-5.7.26/bin/mysqld_safe文件启动mysql服务,&表示后台运行
./mysqld_safe --defaults-file=/home/mysql/my.cnf &
注意之后不要回车,重新打开一个连接窗口
8.连接数据库,要root用户,这里root用户是mysql中的root用户,和linux中的root用户没关系,不要弄混了
./mysql -uroot -p -S /home/mysql/mysql-5.7.26/tmp/mysql.sock
9.下面会要密码,输入从/home/mysql/mysql-5.7.26/data/mysql.err中拿到的初始密码即可
10.修改密码,并刷新
SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
11.退出连接
exit
12.关闭后台启动的数据库
mysqladmin -u root -p密码 -S /home/mysql/mysql-5.7.26/tmp/mysql.sock shutdown
或者
mysqladmin -u root -p -S /home/mysql/mysql-5.7.26/tmp/mysql.sock shutdown
然后输入上面设置的密码即可
13.修改远程登陆权限
root账户中的host项是localhost表示该账号只能进行本地登录,我们需要修改权限,输入命令(远程登录):
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
修改权限。%表示针对所有IP,password表示将用这个密码登录root用户,如果想只让某个IP段的主机连接,或者可以修改为具体的端口号
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.100.%' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;
六.一些权限操作
注意:需要连接数据库之后才能操作
1.添加用户
//只允许指定ip连接
create user '新用户名'@'localhost' identified by '密码';
//允许所有ip连接(用通配符%表示)
create user '新用户名'@'%' identified by '密码';
2.为用户授权
//基本格式如下
grant all privileges on 数据库名.表名 to '新用户名'@'指定ip' identified by '新用户密码' ;
//示例
//允许访问所有数据库下的所有表
grant all privileges on *.* to '新用户名'@'指定ip' identified by '新用户密码' ;
//指定数据库下的指定表
grant all privileges on test.test to '新用户名'@'指定ip' identified by '新用户密码' ;
3.设置用户操作权限
//设置用户拥有所有权限也就是管理员
grant all privileges on *.* to '新用户名'@'指定ip' identified by '新用户密码' WITH GRANT OPTION;
//拥有查询权限
grant select on *.* to '新用户名'@'指定ip' identified by '新用户密码' WITH GRANT OPTION;
//其它操作权限说明,select查询 insert插入 delete删除 update修改
//设置用户拥有查询插入的权限
grant select,insert on *.* to '新用户名'@'指定ip' identified by '新用户密码' WITH GRANT OPTION;
//取消用户查询的查询权限
REVOKE select ON what FROM '新用户名';
4.删除用户
DROP USER username@localhost;
5.修改后进行刷新
FLUSH PRIVILEGES;
七.主从同步
mysql主要是开启binlog来实现主从同步的,下面是操作步骤
这里一台机器用了不同端口来开启mysql(不同机器之间是一样的操作)
192.168.25.151:3307-master
192.168.25.151:3308-slave
1.修改master(3307)端口的mysql服务
(1).修改192.168.25.151:3307-master里的my.cnf文件
[mysqld]
server-id=1 #节点id,master和slave的server-id确保唯一
bind-address=192.168.25.151
port=3307 #端口号
user=mysql
basedir=/home/mysql/mysql_3307
datadir=/home/mysql/mysql_3307/data
socket=/home/mysql/mysql_3307/tmp/mysql.sock
log-error=/home/mysql/mysql_3307/data/mysql.err
pid-file=/home/mysql/mysql_3307/data/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
#开启binlog 用于主从同步
log-bin = mysql-bin #开启mysql的binlog日志功能
sync_binlog = 1 #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全
binlog_format = mixed #binlog日志格式,mysql默认采用statement,建议使用mixed
expire_logs_days = 7 #binlog过期清理时间
max_binlog_size = 100m #binlog每个日志文件大小
binlog_cache_size = 4m #binlog缓存大小
max_binlog_cache_size= 512m #最大binlog缓存大
binlog-ignore-db=mysql #不生成日志文件的数据库,多个忽略数据库可以用逗号拼接,或者 复制这句话,写多行
(2).带着my.cnf配置文件重启mater(3307)端口的mysql
./mysqld_safe --defaults-file=/home/mysql/mysql_3307/my.cnf &
(3).连接mater(3307)端口的mysql
./mysql -uroot -p123456 -S /home/mysql/mysql_3307/tmp/mysql.sock
(4).最好创建个普通用户用于主从同步,这里为了方便直接用root用户(指的是mysql的root用户不是linux的),普通用户操作一样,如果不同机器的话,创建普通用户要给slave(3308)机器开启远程访问权限,不然会连接不上
(5).查看master的状态,记住binlog的File路径,这里没有绝对路径,绝对路径一般在mysql/data目录下,我的是在/home/mysql/mysql_3307/data/mysql-bin.000001下,在自己配置的data目录下,如果不是默认的data目录,要记住这个绝对路径,不然下面的操作可能会出错,还有记住Position参数
show master status;
2.修改slave(3308)端口的mysql服务
(1).修改192.168.25.151-slave的my.cnf配置文件
[mysqld]
server-id=2 #id要唯一
bind-address=192.168.25.151
port=3308 #端口号
user=mysql
basedir=/home/mysql/mysql_3308
datadir=/home/mysql/mysql_3308/data
socket=/home/mysql/mysql_3308/tmp/mysql.sock
log-error=/home/mysql/mysql_3308/data/mysql.err
pid-file=/home/mysql/mysql_3308/data/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
#binlog 用于主从同步
log-bin=mysql-bin
relay-log = mysql-relay-bin
(2).带着my.cnf配置文件重启mater(3307)端口的mysql
./mysqld_safe --defaults-file=/home/mysql/mysql_3308/my.cnf &
(3).连接mater(3307)端口的mysql
./mysql -uroot -p123456 -S /home/mysql/mysql_3308/tmp/mysql.sock
(4).然后输入以下命令
CHANGE MASTER TO
MASTER_HOST = '192.168.25.151',
MASTER_USER = 'root',
MASTER_PASSWORD = '123456',
MASTER_PORT = 3307,
MASTER_LOG_FILE='/home/mysql/mysql_3307/mysql-bin.000001',
MASTER_LOG_POS=463,
MASTER_RETRY_COUNT = 60,
MASTER_HEARTBEAT_PERIOD = 10000;
主要参数说明:
MASTER_HOST:master主机ip
MASTER_USER :连接master的用户名
MASTER_PASSWORD = '123456',
MASTER_PORT = master主机端口
MASTER_LOG_FILE:要和master的binlog的路径一致,因为我的mysql配置不在默认位置,所以我写的绝对路径,不然直接写文件名Salve_IO_Running是为NO的。
MASTER_LOG_POS:要和上面的Position一致
(5).之后输入
start slave;
如果之前开启了slave,要先关闭slave,命令为stop slave;
(6).查看slave状态
show slave status \G
Slave_IO_Running和Slave_SQL_Running都为Yes时,主从配置成功,不然主从设备不能同步
(7).然后自己在master机器上,创建数据库或者表或者insert插入语句,看slave机器是否能同步