进阶篇之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开启事务的方式
Jun 26 MySQL
为什么MySQL分页用limit会越来越慢
Jul 25 MySQL
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
Aug 02 MySQL
MySQL8.0升级的踩坑历险记
Nov 01 MySQL
关于MySQL中的 like操作符详情
Nov 17 MySQL
MySQL中int (10) 和 int (11) 的区别
Jan 22 MySQL
MySQL 主从复制数据不一致的解决方法
Mar 18 MySQL
为什么MySQL8新特性会修改自增主键属性
Apr 18 MySQL
MySQL的存储过程和相关函数
Apr 26 MySQL
分享很少见很有用的SQL功能CORRESPONDING
Aug 05 MySQL
Mysql的Table doesn't exist问题及解决
Dec 24 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
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
js程序中美元符号$是什么
2008/06/05 Javascript
jquery select(列表)的操作(取值/赋值)
2009/08/06 Javascript
javascript中call和apply方法浅谈
2013/09/27 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
AngularJS中的包含详细介绍及实现示例
2016/07/28 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
python使用fcntl模块实现程序加锁功能示例
2017/06/23 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
Python3基于sax解析xml操作示例
2018/05/22 Python
Python编程深度学习计算库之numpy
2018/12/28 Python
python操作文件的参数整理
2019/06/11 Python
Django组件content-type使用方法详解
2019/07/19 Python
利用anaconda作为python的依赖库管理方法
2019/08/13 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
如何定义TensorFlow输入节点
2020/01/23 Python
Python内置函数及功能简介汇总
2020/10/13 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
EJB发布WEB服务一般步骤
2012/10/31 面试题
学生拾金不昧表扬信
2014/01/21 职场文书
人力资源总监工作说明
2014/03/03 职场文书
捐助倡议书范文
2014/04/15 职场文书
校园安全演讲稿
2014/05/09 职场文书
庆国庆活动总结
2014/08/28 职场文书
音乐教师求职信范文
2015/03/20 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书