Linux 下安装 Mysql 数据库
更新,Centos 7 离线安装 Mysql 5.7
近期的一个项目,需要使用 MySQL 5.7,但是甲方所提供的机器是不能访问外网环境的,所以只能通过离线安装的方式来搞,这里大概记录一下,备忘。
- MySQL 5.7 Linux 安装包下载:https://dev.mysql.com/downloads/mysql/5.7.html
选择 Linux - Generic
-> Compressed TAR Archive:(mysql-5.7.18-linux-glibc2.12-x86_64.tar.gz)
,版本按需下载即可;下面是具体的安装过程。
安装步骤
查询并卸载系统自带的数据库 Mariadb
1 | rpm -qa | grep mariadb |
创建用户和用户组
为了数据库管理,对于安装的 MySQL 数据库,生产上我们都会建立一个 mysql用户和mysql用户组。
1 | # 先检查mysql用户和用户组有没有被使用 |
文件上传
如果甲方提供了 访问 VPN ,那么则通过 VPN 建立连接;或者通过甲方提供的方式将文件上传到指定的机器上
1 | # 解压安装包,解压后会有一个mysql-5.7.18-linux-glibc2.12-x86_64.tar.gz包 |
授权
按照下面的操作执行
1 | cd /usr/local/ |
配置文件的创建和配置信息
默认这个配置文件是不存在的,需要创建,并且填入配置信息;在 /usr/local/mysql/ 目录下创建文件并编辑
1 | cd /usr/local/mysql/ |
具体配置信息大致如下
1 | [mysql] |
安装数据库
进入 /usr/local/mysql/ 目录下,执行安装操作。
1 | # 执行安装命令 |
安装后,如下信息表示安装成功
2023-03-23 14:32:16 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld –initialize
2023-03-23 14:32:20 [WARNING] The bootstrap log isn’t empty:
2023-03-23 14:32:20 [WARNING] 2023-03-23T06:32:16.437877Z 0 [Warning] –bootstrap is deprecated. Please consider using –initialize instead
2023-03-23T06:32:16.438432Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
2023-03-23T06:32:16.438439Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000)
安装成功后设置文件及目录权限:
1 | # 在 /usr/local/mysql 目录下执行 |
启动 mysql
/etc/init.d/mysqld restart
我的机器上是出现了如下的报错
1 | ERROR! MySQL server PID file could not be found! |
如果 /usr/local/mysql/data/localhost.localdomain.err 这个文件存在,就进去看一下具体原因,如果没有就按照以下步骤执行。
1 | # 创建 /var/lib/mysql/ |
配置环境变量,在配置文件中 export PATH=$PATH:/usr/local/mysql/bin
1 | # 修改配置文件 /etc/profile |
然后重新启动即可。
获取 mysql 安装后的初始密码
1 | [root@localhost mysql]# cat /root/.mysql_secret |
登录 mysql 遇到的问题
1 | mysql -uroot -p |
解决方案:
1、首先保证在 my.cnf 文件中 socket 的配置如下:
1 | ... |
2、对 /tmp/mysql.sock 和 /var/lib/mysql/mysql.sock 建立软连接
1 | ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock |
修改密码
1 | # 执行语句如下 |
添加远程访问权限
1 | # 切换到 mysql 数据库 |
设置开机自启动服务
1 | # 将mysqld服务加入到系统服务 |
此时如果通过 远程访问还是访问不通,则可能是因为防火墙的问题;这里有两种解决办法
- 直接关闭防火墙
1
systemctl stop firewalld
- 开通防火墙,放开对 3306 的拦截
1
firewalld-cmd --zone=public --add-port=3306/tcp --permanent
Centos 7 在线安装 Mysql 5.7
最近在搞 Apollo ,熟悉的同学应该知道,Apollo 需要依赖 Mysql。本以为很容易搞定,但是却踩了一路坑,眼高手低,也参考了网上很多博客,果然是残缺就是美!本篇就简单记录一下这个过程,以便后面参考。
环境
| 软件 | 版本|
| ———— | ———— |
|linux | centOS 7|
| jdk | 8 |
| mysql| 5.7.24 |
准备
安装前,我们可以通过 rpm -qa | grep mysql
检测系统是否自带安装 MySQL,如果当前系统有安装且期望卸载的话,可以通过下面两种删除模式进行删除:
- 普通删除模式:
rpm -e mysql
- 强力删除模式:
rpm -e --nodeps mysql
安装
下载和安装
1、下载mysql安装包
1 | wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm |
2、安装
1 | rpm -ivh mysql57-community-release-el7-9.noarch.rpm |
3、下载安装依赖包
1 | yum install mysql-server |
第一次下载这里会比较慢,no cache
基本操作
1、验证是否安装成功
mysqladmin –version
mysqladmin Ver 8.42 Distrib 5.7.22, for Linux on x86_64
mysql -V
mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper
2、启动 MySQL
sudo systemctl start mysqld
3、查看 MySQL 运行状态
sudo systemctl status mysqld
4、停止 MySQL
sudo systemctl stop mysqld
5、重启 MySQL
sudo systemctl restart mysqld
关于密码
Mysql 5.7 默认安装之后 root 是有密码的,获取 MySQL 的临时密码 为了加强安全性,MySQL 5.7 为 root 用户随机生成了一个密码,在 error log 中,关于 error log 的位置,如果安装的是 RPM 包,则默认是 /var/log/mysqld.log 。 只有启动过一次 mysql 才可以查看临时密码。
在利用 YUM 安装 mysql 数据库过程中,系统会自动生成一个临时密码,获取方式为:
grep ‘temporary password’ /var/log/mysqld.log
没有密码: 如果以前安装过 mysql,这时的 mysqld.log 中就不会有 temporary password这时就需要删除 mysql 残留的数据:
rm -rf /var/lib/mysql
执行完毕后需要重新启动 MySQL 服务:
sudo systemctl restart mysqld
这时就可以通过上面的命令去查找数据库生成的临时密码了
mysql 1130 错误
可能是你的帐号不允许从远程登陆,只能在 localhost。这个时候只要在 localhost 的那台电脑,登入 mysql 后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改成”%”
1 | mysql -u root -pvmwaremysql>use mysql; |
使得我们当前的账户和密码能够应用的所有的远程主机连接:
1 | > GRANT ALL PRIVILEGES ON . TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; |
Linux 下安装 Mysql 数据库
http://www.glmapper.com/2019/06/05/linux/linux-ops-soft-mysql/