本实例在 CentOS 7.6, 所用版本为 MySQL 5.7.24
1、下载mysql,去官网下载;
https://dev.mysql.com/downloads/file/?id=481117
2、检查Linux是否安装了mariadb数据库,mariadb数据库是mysql的分支,执行命令:
yum list installed | grep mariadb
如果Linux中安装了mariadb数据库,先卸载掉,
因为mariadb数据库与安装mysql会发生冲突,
执行命令:
yum -y remove mariadb-libs.x86_64
3、安装
(1)、解压下载下来的mysql软件压缩包,业界习惯应用放到/usr/local,执行命令:
tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
(2)、将解压后的mysql-5.7.24-linux-glibc2.12-x86_64改名为mysql-5.7.24 ,为了名称简短,建议就用mysql-5.7.24, 这样后面命令可以直接使用
cd /usr/local/
mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql-5.7.24
(3)、在mysql-5.7.24文件夹目录下创建一个/data/3306文件夹,切换到mysql-5.7.24目录,执行命令;3306名称可以随意,不过保证一致,后面的命令都可以直接参考。
cd mysql-5.7.24/
mkdir data
cd data/
mkdir 3306
(4)、添加mysql用户及用户组,执行命令:
groupadd mysql
useradd mysql -g mysql
-g: 是指定用户所在组
(5)、切换到mysql-5.7.24/bin目录下执行:
cd /usr/local/mysql-5.7.24/bin/
./mysqld --initialize-insecure --user=mysql --datadir=/usr/local/mysql-5.7.24/data/3306 --basedir=/usr/local/mysql-5.7.24
其中 --initialize-insecure 表示不生成临时密码
该命令会在/usr/local/mysql-5.7.24/data/3306生成以下文件
(6)、在mysql-5.7.24/bin目录下执行命令:
./mysql_ssl_rsa_setup --datadir=/usr/local/mysql-5.7.24/data/3306
7、更改mysql-5.7.24整个文件夹目录权限所属,执行命令:
chown -R mysql:mysql /usr/local/mysql-5.7.24
配置:
8、在mysql-5.7.24/data/3306 目录下创建my.cnf文件;
cd /usr/local/mysql-5.7.24/data/3306
vim my.cnf
写入如下基础配置
[client]
port = 3306
socket = /usr/local/mysql-5.7.24/data/3306/mysql.sock
default-character-set=utf8mb4
[mysqld]
port = 3306
socket = /usr/local/mysql-5.7.24/data/3306/mysql.sock
datadir = /usr/local/mysql-5.7.24/data/3306
log-error = /usr/local/mysql-5.7.24/data/3306/error.log
pid-file = /usr/local/mysql-5.7.24/data/3306/mysql.pid
character-set-server=utf8mb4
lower_case_table_names=1
autocommit = 1
至此MySQL安装完成;
启动MySQL服务
在mysql-5.7.24/bin目录下执行命令:
cd /usr/local/mysql-5.7.24/bin
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.24/data/3306/my.cnf &
(其中 & 符号表示后台启动)
不过此时,Mysql数据库没有设置root密码的,远程也无法进行连接,接下来继续操作。
修改密码
1、登录进入mysql,在mysql-5.7.18/bin目录下执行命令:
./mysql -uroot -p -P3306 -h127.0.0.1
3306代表的是端口
提示输入密码,直接回车,因为上面生成配置文件时,没有生成密码,进入mysql环境
2、修改mysql的密码,执行:
alter user 'root'@'localhost' identified by 'root';
(其中by后的 root 是我们设置的密码)
远程访问
1、授权远程访问,执行命令:(这样远程客户端才能访问)
grant all privileges on *.* to root@'%' identified by 'root';
其中*.* 的第一个表示所有数据库名,第二个表示所有的数据库表;
root@’%’ 中的root表示用户名,%表示ip地址,%也可以指定具体的ip地址,
比如root@localhost,root@192.168.10.130
2、执行以下如下命令刷新权限:
flush privileges;
3、如果上面授权远程访问执行之后依然远程连接不上mysql,可能是Linux上防火墙拦截了,可以将防火墙先关闭;
关闭防火墙命令:
systemctl status firewalld.service 查看防火墙状态
systemctl stop firewalld.service 本次访问关闭防火墙
systemctl disable firewalld.service 从下次开始关闭防火墙
systemctl enable firewalld.service 打开防火墙
在实际公司里面不要这么做,而是只开通需要暴露的端口就好了。
不过我们自己测试为了方便可以直接关闭;
防火墙开放端口命令:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重新加载防火墙配置:
firewall-cmd --reload
重启防火墙:
systemctl restart firewalld
命令含义:
–zone #作用域:查看当前的区域:firewall-cmd --get-default-zone
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
取消端口开放:
firewall-cmd --permanent --zone=public --remove-port=3306/tcp
查询端口号8080 是否开启:
firewall-cmd --query-port=8080/tcp
查询有哪些端口是开启的:
firewall-cmd --list-port
关闭MySQL服务,在mysql-5.7.24/bin目录下执行:
./mysqladmin -uroot -p -P3306 -h127.0.0.1 shutdown
至此,已经搭建好一个MYSQL,如果还想继续搭建多个MySQL,那就继续
1、在MySQL安装主目录下创建 /data/4406目录;
cd /usr/local//mysql-5.7.24/data
mkdir 4406
2、执行数据库初始化,在MySQL的/usr/local/mysql-5.7.24/bin目录下执行命令:
cd /usr/local/mysql-5.7.24/bin/
./mysqld --initialize-insecure --basedir=/usr/local/mysql-5.7.24 --datadir=/usr/local/mysql-5.7.24/data/4406 --user=mysql
其中 initialize-insecure 表示不生成MySQL数据库root用户的随机密码,即root密码为空;
3、在/data/4406目录下创建一个my.cnf文件;
cd /usr/local/mysql-5.7.24/data/4406
vim my.cnf
4、配置MySQL数据库服务的my.cnf文件
[client]
port = 4406
socket = /usr/local/mysql-5.7.24/data/4406/mysql.sock
default-character-set=utf8mb4
[mysqld]
port = 4406
socket = /usr/local/mysql-5.7.24/data/4406/mysql.sock
datadir = /usr/local/mysql-5.7.24/data/4406
log-error = /usr/local/mysql-5.7.24/data/4406/error.log
pid-file = /usr/local/mysql-5.7.24/data/4406/mysql.pid
character-set-server=utf8mb4
lower_case_table_names=1
autocommit = 1
至此在同一台Linux上就搭建了第二个数据库实例;
在一个linux上,只需要安装一份mysql程序,但是可以部署多个mysql服务实例;
启动第二个MySQL服务
切换到/usr/local/mysql-5.7.24/bin目录下,使用 msyqld_safe 命令指定配置文件并启动MySQL服务:
cd /usr/local/mysql-5.7.24/bin
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.24/data/4406/my.cnf &
其中 --defaults-file 是指定配置文件,& 符合表示后台启动;
1、登录进入mysql,在mysql-5.7.24/bin目录下执行命令:
./mysql -uroot -p -P4406 -h127.0.0.1
2、修改mysql的密码,执行:
alter user 'root'@'localhost' identified by 'root';
(其中root是我们设置的密码)
3、授权远程访问,执行命令:(这样远程客户端才能访问)
grant all privileges on *.* to root@'%' identified by 'root';
4、执行以下如下命令刷新权限:
flush privileges;
5.设置为开机启动
vi /etc/rc.local
加入
/usr/local/mysql-5.7.24/bin/mysqld_safe --defaults-file=/usr/local/mysql-5.7.24/data/3306/my.cnf &
/usr/local/mysql-5.7.24/bin/mysqld_safe --defaults-file=/usr/local/mysql-5.7.24/data/4406/my.cnf &
/etc/rc.local是/etc/rc.d/rc.local的软链接, 分别看看是否有执行权限
ls -l /etc/rc.local
ls -l /etc/rc.d/rc.local
修改/etc/rc.d/rc.local的可执行权限
chmod +x /etc/rc.d/rc.local
重启测试搞定, 注意这是重启服务器的命令!!!!!
reboot