Linux Mac+vmware+linux,部署 mysql

block · 2017年10月02日 · 最后由 心意已决 回复于 2020年11月25日 · 3057 次阅读

背景

由于需要研究接口测试写入数据库,所以又需要研究下 mysql 啦,但如果在自己的真机上安装 mysql 总觉得会给真机带来部分负担,所以本次选择了在虚拟中的 linux centOS6.5 中安装 mysql。

前期工作

关于如何安装虚拟机和如何安 Linux centOS 系统,本文不做赘述,本文只从下载 mysql 到部署完毕做详细说明。

1. 在 Select Operating System 中选择版本 Linux - Generic(linux 的通用版本)

2. 如果安装的 linux 版本是 32 位 的,那就下载 x86,32-bit ,如果安装的 linux 版本是 64 位 的,那么就下载 x86,64-bit

  • 将下载的 .tar.gz 文件拷贝到 Linux centOS 系统桌面中

  • 解压

1. 在桌面右键鼠标,打开终端

2. 在终端中输入命令 tar -zxvf mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz

3. 在终端中输入命令 cp -r mysql-5.6.37-linux-glibc2.12-x86_64 /usr/local/mysql ,将解压出来的文件夹复制到 /usr/local/mysql 下

  • 添加 mysql 用户到 mysql 用户组,此步骤为了后面安装 mysql,使用 root 用户是无法安装的

1. 在终端中输入 groupadd mysql ,添加用户组

2. 在终端中输入 useradd -g mysql mysql ,添加 mysql 用户到 mysql 用户组

开始安装 mysql

1. 在终端中输入 cd /usr/local/mysql/ ,进入刚才我们复制过的 mysql 文件夹

2. 在终端中输入 mkdir ./data/mysql ,创建 mysql 的 data 文件夹

3. 在终端中输入 chown -R mysql:mysql ./ ,赋予用户组 mysql 中的 mysql 用户权限

4. 在终端中输入 ./scripts/mysql_install_db --user=mysql --datadir=/usr/locay/mysql/data/mysql ,开始执行安装脚本,出现以下内容则安装成功

修改启动脚本

光安装完肯定还是不行的,我们要修改里面的启动脚本,否则会无法启动报错

  • 先将文件复制到相应的文件夹

1. 在终端中输入 cp support-files/mysql.server /etc/init.d/mysqld

2. 在终端中输入 chmod 755 /etc/init.d/mysqld ,修改此文件的权限,如果是自己用那 777 或者 755 都好啦

3. 在终端中输入 cp support-files/my-default.cnf /etc/my.cnf

若出现是否覆盖原有文件,就选择覆盖

  • 修改脚本

1. 在终端中输入 vim /etc/init.d/mysqld 将以下图片中的字段,修改为:

basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/mysql

  • 修改环境变量

1. 在终端中输入 vim /etc/profile ,设置环境变量的目的就是,无论你在哪个文件夹,都能通过 mysql 命令访问数据库,编辑 profile 环境变量如下

export MYSQL_HOME=/usr/local/mysql

export PATH=$MYSQL_HOME/bin:$PATH

2. 在终端中输入 source /etc/profile 使设置立即生效

启动 mysql 服务

1. 在终端中输入 service mysqld start ,如下图:

2. 在终端中输入 mysql -uroot ,以 root 用户登录 mysql,见下图代表成功:


  • 但我们执行到这步,仅仅是将 mysql 部署好,而要实现远程访问,那我们还需要做得更多,下面咱们就来看看使用 navicat 远程访问 linux 虚拟机中的 mysql

  • 首先,我们要先将虚拟机中的联网模式改为 桥接 ,然后进入到配置文件设置虚拟机的网络,本人使用的是 mac bookpro 所以就以 mac 为主啦

1. 在真机中,打开终端,输入 ifconfig ,虚拟机的 ip 地址,需要与真机的 ip 在同一个网段,也就是虚拟机的 ip 需要设置为 192.168.1.xxx

2. 在虚拟机中,打开终端,输入 vim /etc/sysconfig/network-scripts/ifcfg-eth0 ,通常情况下,都会是 eth0 这个配置文件,也有可能是 eth1 ,关于如何辨别是 eth0 还是 eth1 ,见下图位置:

3. 打开配置文件后:一般情况下,只有这几种情况

DEVICE 是网卡名称
BOOTPROTO 是获取的 ip 地址类型,static 和 none 为静态地址,dhcp 为动态获取 ip 地址
HWADDR 是 MAC 地址
MTU 是最大传输单位
NM_CONTROLLED 是否启用 NetworkManager 图形界面配置工具
ONBOOT 设置网卡是否在 Linux 系统启动时激活,这一项一般都要设为 yes
IPADDR 是本机 ip 地址
NETMASK 是子网掩码
GATEWAY 是设置网关的
DNS1 是首选 DNS 服务器
DNS2 时辅助 DNS 服务器
BROADCAST 是广播地址
NETWORK 是子网地址

需要修改 BOOTPROTO=none 然后没有的则添加:

DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
IPADDR=192.168.1.168 //设置为你自己想设置的 ip
NATMASK=255.255.255.0 //子网掩码,都一样
PREFIX=24
GATEWAY=192.168.1.1 //和主机相同,如果有路由器的,一般情况下都是路由器的 ip
DNS1=8.8.8.8 //这两项保持就好
DNS2=114.114.114.114

修改后,保存退出,然后在终端中输入 source /etc/sysconfig/network-scripts/ifcfg-eth0 ,使配置立刻生效,打开虚拟机的网络

在主机的终端输入 ping 192.168.1.168 ,如下图,代表成功

  • 到了这个时候,我们还是不能远程链接,因为我们并没有给 mysql 的用户设置密码和权限

1. 在虚拟机的终端输入 vim /etc/my.cnf ,在 [mysqld] 字段后,添加 skip-grant-tables,跳过密码验证,见下图

2. 退出保存

3. 接下来,我们需要重启 mysql 服务,在终端输入 service mysqld restart

4. 直接在终端中输入 mysql ,进入 mysql 文本界面

5. 输入 use mysql ,使用 mysql 数据库

6. 输入 update user set password=password("123456") where user='root'; ,设置 root 用户的密码

7. 输入 quit ,退出数据库,然后按照刚才的方式编辑 my.cnf 将 skip-grant-tables 删除

8. 输入 service mysqld restart 重启 mysql 服务

9. 再次进入 mysql ,此次进入 mysql 需要在终端中输入 mysql -uroot -p 使用 root 账户名和刚才设置的密码登录 mysql

10. 输入 grant all privileges on *.* to root@'%' identified by '123456'; ,设置所有的权限给 root 用户,% 代表除使用本地 ip 外的其他主机允许登录到本数据库,使用密码 123456

11. 输入 flush privileges; ,刷新规则

12. 输入 quit 退出 mysql

  • 阿偶,出错了

  • 不要担心,经过各种度娘谷歌,找到问题的关键,就是 linux 的防火墙,我们要对其进行下设置,增加一个数据库 3306 的接口,需要 3306 这个端口可以对外访问

1. 在终端中输入 vim /etc/sysconfig/iptables ,设置下 linux 中的防火墙

2. 在 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 下面添加一行 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT ,见下图

3. 在终端中输入 service iptables restart ,重启防火墙

4. 再次链接,bingo,链接成功,大家可以尽情的耍啦

注:如果设置完防火墙,还是不能连接,还是提示 password yes 错误,大家也不用担心,按照设置用户名密码权限的流程中的 7-12 再次执行一遍就哦啦

共收到 4 条回复 时间 点赞

为啥不用 docker?

block Linux centOS 6.5 搭建 tomcat+jenkins 中提及了此贴 10月03日 13:41
block Linux centOS 6.5 部署 SonarQube 5.6.6 中提及了此贴 10月03日 22:12

@Kenblock 在 Mysql5.7 及以上版本中,
安装 Mysql 的步骤 4:

./scripts/mysql_install_db --user=mysql --datadir=/usr/locay/mysql/data/mysql

需要改为:

./bin/mysqld --user=mysql --datadir=/usr/locay/mysql/data/mysql
wuhao 回复

万分感谢

仅楼主可见
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册