#一、mysql安装
1,将mysql解压放到/user/local/mysql中
2,添加用户组,命名为mysql
命令:groupadd mysql
3,创建用户mysql,并指定所属用户组为mysql
命令:useradd -r -g mysql mysql
4,赋权,让用户组和用户具有操作权限
下面命令中 . 表示本级目录,一定要保证当前所在的文件夹是/usr/local/mysql
对mysql用户组赋权命令:chgrp -R mysql .
对mysql用户赋权命令:chown -R mysql .
上两条命令也可以合并为:chown -R mysql:mysql ./
5,新建mysql数据存储文件夹
命令:mkdir data
6,初始化数据库,生成默认密码
命令:bin/mysqld --initialize --user=mysql --basedir=/usradir=/usr/local/mysql/data/
运行结果:basedir=/usradir=/usr/local/mysql/data/
2018-12-22T05:24:39.603264Z 0 [Warning] [MY-011070] [Server] ‘Disablining --skip-symbolic-links (or equivalent) is the default. Consider notas it’ is deprecated and will be removed in a future release.
2018-12-22T05:24:39.603444Z 0 [System] [MY-013169] [Server] /usr/localmysqld 8.0.13) initializing of server in progress as process 27519
2018-12-22T05:24:41.891360Z 5 [Note] [MY-010454] [Server] A temporary ed for root@localhost: ePrOX&p>L52# //这是初始默认密码,一定要记住
2018-12-22T05:24:43.475923Z 0 [System] [MY-013170] [Server] /usr/localmysqld 8.0.13) initializing of server has completed
7,设置root用户权限数据库存储文件夹的用户权限
命令:chown -R root:root ./
chown -R mysql:mysql data
8,复制并修改etc/my.cnf配置文件
cp support-files/my-default.cnf /etc/my.cnf
复制过去,其实也就是空白页,一开始没有my-default.cnf这个文件,可以用touch my-default.cnf
命令创建一个,并配置权限
chmod 777 ./my-default.cnf
my.cnf内容:
[mysqld] basedir = /usr/local/mysql datadir = /usr/local/mysql/data socket = /tmp/mysql.sock character-set-server=utf8 port = 3306 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [client] socket = /tmp/mysql.sock default-character-set=utf8
9,赋权:chmod 777 /etc/my.cnf
10,设置开机自启动
命令:cp support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
11,注册并查看服务
命令:chkconfig --add mysql
chkconfig --list mysql
mysql 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
12,/etc/ld.so.conf 这个文件记录了编译时使用的动态链接库的路径,告诉链接器去哪个路径下寻找链接时需要用到的库,如果找不到,就会提示链接错误。
如果我们安装了第三方的库,而没有将它放在链接器可以找到的目录,则运行使用这些第三方库的程序时,会提示找不到库。
命令:vim /etc/ld.so.cnf
添加如下内容:
include ld.so.conf.d/*.conf /usr/local/mysql/lib
13,配置环境变量/etc/profile
添加以下内容:export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
编译profile使配置文件生效:source /etc/profile
14,启动mysql:service mysql start
15,使用生成的密码登录数据库:mysql -u root -p密码
(-p后面不用加空格,会直接当成密码)
16,修改密码:alter user 'root'@'localhost' identified by 'root';
exit;
重新登录
安装完成
#二、下面设置MySQL的远程访问
1,登录mysql,使用mysql数据库:use mysql;
2,查询用户:select host,user from user;
执行完上面的命令后会显示一个表格
查看表格中 root 用户的 host,默认应该显示的 localhost,只支持本地访问,不允许远程访问。
3,将root用户的host修改为%,表示通配所有 host,可以远程访问:update user set host='%' where user='root'
4,刷新权限
所有操作后,应执行:flush privileges;
5,授权 root 用户的所有权限:GRANT ALL ON *.* TO 'root'@'%';
6,查看 root 用户的 host
再次执行步骤 2,你会发现 root 用户的 host 已经变成 %,说明我们的修改已经成功,可以远程访问了。
7,访问数据库
远程访问数据库的可视化工具比较多如:Navicat、SQLyog、MySQL workbench 等,我这里使用 Navicat
输入访问的 host 和密码,报 2059 错误,这是因为 MySql8.0 版本 和 5.0 的加密规则不一样,而现在的可视化工具只支持旧的加密方式。
此问题有两种方法,一种是更新 Navicat 驱动来解决此问题,另一种是将 MySQL 用户登录的加密规则修改为 mysql_native_password,第一种方法我试过了没有起作用,我这里采用第二种方法。
8,修改加密规则:ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
(by后面是用户密码)
9,更新 root 用户密码:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
(by后面是用户密码)
10,刷新权限:FLUSH PRIVILEGES;
11,要想外部能访问虚拟机内部的服务就必须开放防火墙的端口
这里mysql使用的是3306端口
命令:firewall-cmd --permanent --add-port=3306/tcp
(permanent 表示设置为持久)
重启防火墙:firewall-cmd --reload
查看端口是否开放:fierwall-cmd --query-port=3306/tcp
(批量开放端口:firewall-cmd --permanent --add-port=2000-3000/tcp
)
12,此时可以使用navicat等工具连接mysql。
#三、mysql主从配置
1,将mysql所在的虚拟机克隆一份,并设置为不同的ip
2,修改主数据库的/etc/my.cnf文件:vim /etc/my.cnf
修改内容:[mysqld] log_bin=master_log server_id=1
(log_bin 日志文件名称,启用日志功能,
server_id 给定mysql一个id)
3,重启mysql:service mysql restart
4,进入主数据库的客户端工具:mysql -u root -proot
使用mysql数据库:use mysql;
5,新建一个myslave用户并赋予权限
新建用户:CREATE USER 'myslave'@'从机ip' IDENTIFIED WITH mysql_native_password BY 'root';
赋权:GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'从机ip'
更新 root 用户密码:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
刷新权限:FLUSH PRIVILEGES;
6,获取主节点当前binary log文件名和位置(position):SHOW MASTER STATUS;
日志文件:存在于mysql安装目录/data
data文件夹xxxxx.index文件,存储日志文件在哪里.
data文件夹auto.cnf编写当前mysql的uuid
7,修改主数据库auto.conf中的uuid,不要与从数据库相同
8,重启主数据库
9,修改从数据库的my.cnf的server_id:vim /etc/my.cnf
修改内容:[mysqld] server_id=2
10,重启从数据库
11,进入从数据库的客户端工具
12,关闭slave:stop slave;
13,在从数据库中配置出master的信息
change master to master_host='主机ip',master_user='myslave',master_password='root',master_log_file='master_log.000001(前面主数据库查询到的file名,以后会自动更新)';
刷新权限:FLUSH PRIVILEGES;
14,开启slave:start slave;
15,显示slave状态:show slave status \G;
只要没有错误,说明配置成功主从关系
16,验证主从关系
a,主从服务都重新启动
b,在主数据库中新建数据库,新建表,添加数据,观察从数据库的状态
同步更新即成功。