进阶篇之linux环境下安装MySQL数据库


Posted in MySQL onApril 09, 2022

1.概述

对于mysql二进制安装,优点是可以安装到任何路径下,灵活性好,一台服务器可以安装多个mysql。缺点是已经编译过,性能不如源码编译得好,不能灵活定制编译参数。如果用户即不想安装最简单却不够灵活的RPM包,又不想安装复杂费时的源码包,那么已编译好的二进制包将是最好的选择,下面让我们来介绍如何在linux系统下安装mysql服务端。

2.前期准备

2.1下载mysql二进制安装包

mysql官网:https://dev.mysql.com/downloads/mysql

进阶篇之linux环境下安装MySQL数据库
因为我下载的是mysql-8.0.23-linux-glibc2.12-x86_64.tar版本,如果有最新版本,则下载最新版本就好了。

2.2导入mysql二进制安装包

通过Xftp工具把安装包传输到linux系统package目录去:
进阶篇之linux环境下安装MySQL数据库

3.mysql部署

●解压mysql安装包

--切换到安装目录
cd /app
--解压xz压缩文件
tar -xvf /app/package/mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz

●修改mysql文件夹名称

--把mysql-8.0.23-linux-glibc2.12-x86_64修改为mysql文件夹名称
mv /app/mysql-8.0.23-linux-glibc2.12-x86_64 /app/mysql

●创建data目录

--在mysql根目录下创建data目录,用于存放数据
mkdir /app/mysql/data

●创建mysql用户组和mysql用户

--创建mysql用户组和mysql用户
groupadd mysql
useradd -g mysql mysql

●修改mysql目录权限

--修改mysql目录权限
chown -R mysql.mysql /app/mysql/

●初始化数据库

--先切换到mysql安装目录
cd /app/mysql
--初始化数据库
bin/mysqld --initialize --user=mysql --basedir=/app/mysql --datadir=/app/mysql/data

进阶篇之linux环境下安装MySQL数据库
●配置mysql

--先切换到mysql.support-files目录
cd /app/mysql/support-files
--在mysql/support-files创建文件my-default.cnf
touch my-default.cnf
--复制配置文件到/etc/my.cnf
cp -a ./my-default.cnf /etc/my.cnf
--编辑my.cnf
vim /etc/my.cnf

my.cnf输入如下配置内容:

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
user=mysql
socket=/tmp/mysql.sock
basedir=/app/mysql
datadir=/app/mysql/data

●配置环境变量

--编辑profile文件
vim /etc/profile
--配置mysql环境变量
PATH=/data/mysql/bin:/data/mysql/lib:$PATH
export PATH
--使mysql环境变量生效
source /etc/profile
--看环境变量是否生效
echo $PATH

●启动mysql

cd /app/mysql/bin
systemctl start mysqld
or
service mysql start

启动mysql时候可能会遇到如下错误:
●Failed to start mysqld.service: Unit not found.
进阶篇之linux环境下安装MySQL数据库
or
Starting MySQL.Logging to '/app/mysql/data/dengwu.err'.
... ERROR! The server quit without updating PID file (/app/mysql/data/dengwu.pid).
进阶篇之linux环境下安装MySQL数据库
解决方法如下:

--需要安装mariadb-server
yum install -y mariadb-server
--然后启动mariadb服务
systemctl start mariadb.service
--需要的可以添加mariadb服务开机启动
systemctl enable mariadb.service

●Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.
进阶篇之linux环境下安装MySQL数据库
解决方法如下:

chown -R mysql.mysql /app/mysql/

●Starting MySQL... ERROR! The server quit without updating PID file (/app/mysql/data/dengwu.pid).
解决方法如下:

--查看mysql进程
ps -ef|grep mysqld
--杀死mysql进程
kill -9 mysql进程ID

然后重新启动下mysql:
进阶篇之linux环境下安装MySQL数据库

4.修改mysql密码

root用户第一次登录mysql,因为初始密码我们并不知道,一般情况下我们都会重新设置一个新的密码,具体操作如下:

--编辑my.cnf
vim /etc/my.cnf

输入如下命令行:

default_authentication_plugin=mysql_native_password

如果忘记了密码再加上:

--跳过密码验证(等设置了密码就去掉)
skip-grant-tables

然后登录mysql:

--登录mysql
mysql -u root -p

然后输入命令查看mysql用户组:

--查看mysql用户表
select user,host,authentication_string from mysql.user;

进阶篇之linux环境下安装MySQL数据库
看看root用户没有开启远程连接权限,如果没有则执行如下命令:

--修改root用户可以远程连接
update mysql.user set host='%' where user='root';

开启远程连接权限后,再来修改root用户密码:

--如果host是localhost则@字符后面是localhost,反之则是%,以host结果为准
--修改加密规则
alter user 'root'@'%' identified by 'qwer1234' password expire never;
--更新一下用户的密码
alter user 'root'@'%' identified with mysql_native_password by 'qwer1234';
--刷新权限
flush privileges;
--修改root用户密码
alter user 'root'@'%' identified by 'qwer1234';

进阶篇之linux环境下安装MySQL数据库

如果防火墙开启了,则需要加入允许mysql端口访问权限,具体命令如下:

--允许访问
firewall-cmd --permanent --zone=public --add-port=3306/tcp
--重新加载
firewall-cmd --reload
--查看是否开通访问权限
firewall-cmd --permanent --zone=public --query-port=3306/tcp

然后重新启动mysql:

--重新启动mysql
service mysql restart;

5.配置mysql阿里云安全组策略

登录阿里云->安全组规则->访问规则->入方向->手动添加如下策略:
进阶篇之linux环境下安装MySQL数据库
使用Navicat连接成功:
进阶篇之linux环境下安装MySQL数据库

MySQL 相关文章推荐
Mysql Show Profile
Apr 05 MySQL
Mysql服务添加 iptables防火墙策略的方案
Apr 29 MySQL
MySQL 视图(View)原理解析
May 19 MySQL
Mysql基础知识点汇总
May 26 MySQL
Mysql实现主从配置和多主多从配置
Jun 02 MySQL
MySQL 8.0 驱动与阿里druid版本兼容问题解决
Jul 01 MySQL
教你如何让spark sql写mysql的时候支持update操作
Feb 15 MySQL
Linux系统下MySQL配置主从分离的步骤
Mar 21 MySQL
MySQL中一条SQL查询语句是如何执行的
Apr 08 MySQL
MySQL数据库安装方法与图形化管理工具介绍
May 30 MySQL
数据设计之权限的实现
Aug 05 MySQL
MySQL自定义函数及触发器
Aug 05 MySQL
MySQL的存储函数与存储过程的区别解析
Apr 08 #MySQL
MySQL数据库查询进阶之多表查询详解
MySQL中一条SQL查询语句是如何执行的
解决MySQL Varchar 类型尾部空格的问题
Apr 06 #MySQL
mysql的单列多值存储实例详解
Apr 05 #MySQL
详细聊一聊mysql的树形结构存储以及查询
mysql查询结果实现多列拼接查询
Apr 03 #MySQL
You might like
PHP简单实现断点续传下载的方法
2015/09/25 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
Python之多线程爬虫抓取网页图片的示例代码
2018/01/10 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
python实现日志按天分割
2019/07/22 Python
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
应届生个人求职信模板
2013/11/26 职场文书
企业文化演讲稿
2014/05/20 职场文书
培训班通知
2015/04/25 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
离婚案件原告代理词
2015/05/23 职场文书
毕业酒会致辞
2015/07/29 职场文书
幼师自荐信范文(2016推荐篇)
2016/01/28 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫