Linux-安装MySQL(详细教程)
Posted 多加点辣也没关系
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux-安装MySQL(详细教程)相关的知识,希望对你有一定的参考价值。
Linux-安装mysql
前言
本文的主要内容是在 Linux 上安装 MySQL,以下内容是源于 B站 - MySQL数据库入门到精通 整理而来。
一、概述
MySQL是一种关系型数据库管理系统,所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。
- 社区版:免费,但是不提供任何技术支持
- 商业版:收费,可以试用30天,官方提供技术支持
二、下载
进入官网之后点击 DOWNLOADS
进入页面
这里选择 Downloads Archives
进入页面,选择 MySQL Community Server
根据你服务器的配置选择,我服务器是 CentOS 7 所以 Operating System 选择 Red Hat Enterprise Linux / Oracle Linux
,OS Version 选择 Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86,64-bit)
,选择第一个点击 Download
下载。
----------------------------------------------------
以下我也提供了 MySQL 的安装包供大家使用:
网址:百度网盘
提取码:vf2q
----------------------------------------------------
三、安装
连上 Linux 服务器(这里的服务器我用的是云服务器),我先创建一个 mysql 的文件夹来存放安装包。
# 在 /soft 目录下创建一个空的文件夹 mysql
mkdir /soft/mysql
# 进入这个新建的文件夹下
cd /soft/mysql
然后上传之前下载好的 Linux 下 MySQL 的安装包,使用 rz
命令(有些终端工具是可以直接上传文件的,比如 FinalShell)
在该目录下再创建一个文件夹,并且将安装包解压到该文件夹中
# 在当前目录下(mysql)下创建一个 mysql-8.0.26 文件夹
mkdir mysql-8.0.26
# 解压安装包到该目录下
tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar -C mysql-8.0.26
解压完成之后可以切换到 mysql-8.0.26
目录下查看解压后的文件
可以看到解压后的文件都是 rpm 文件,所以需要用到 rpm
包资源管理器相关的指令安装这些 rpm 的安装包
在安装执行 rpm 安装包之前先下载 openssl-devel
插件,因为 mysql 里面有些 rpm 的安装依赖于该插件。
yum install openssl-devel
安装完该插件之后,依次
执行以下命令安装这些 rpm 包
rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm
注意:安装 rpm 包时提示 依赖检测失败
,请详见文件末尾 可能遇到的问题
寻求解决方案。
在 Linux 中 MySQL 安装好了之后系统会自动的注册一个服务,服务名称叫做 mysqld
,所以可以通过以下命令操作 MySQL:
-
启动 MySQL 服务:
systemctl start mysqld
-
重启 MySQL 服务:
systemctl restart mysqld
-
关闭 MySQL 服务:
systemctl stop mysqld
这里先启动 MySQL 服务
rpm 安装 MySQL 会自动生成一个随机密码,可在 /var/log/mysqld.log
这个文件中查找该密码
cat /var/log/mysqld.log
A temporay password is generated for root
@localhost: ****密码****
,这里我安装的 MySQL 生成的临时密码是:JAgc=S-:4fGC
,账号是 root
,有了账号和密码之后就可以连接 MySQL 了。
# 连接 MySQL
mysql -u root -p
到此 Linux 上安装 MySQL 基本结束。
四、卸载
卸载 MySQL 前需要先停止 MySQL
命令:systemctl stop mysqld
停止 MySQL 之后查询 MySQL 的安装文件:rpm -qa | grep -i mysql
卸载上述查询出来的所有的 MySQL 安装包
rpm -e mysql-community-client-plugins-8.0.26-1.el7.x86_64 --nodeps
rpm -e mysql-community-server-8.0.26-1.el7.x86_64 --nodeps
rpm -e mysql-community-common-8.0.26-1.el7.x86_64 --nodeps
rpm -e mysql-community-libs-8.0.26-1.el7.x86_64 --nodeps
rpm -e mysql-community-client-8.0.26-1.el7.x86_64 --nodeps
rpm -e mysql-community-libs-compat-8.0.26-1.el7.x86_64 --nodeps
删除MySQL的数据存放目录
rm -rf /var/lib/mysql/
删除MySQL的配置文件备份
rm -rf /etc/my.cnf.rpmsave
五、常用设置
(1)修改 root 用户密码
如果你觉得 MySQL 自动生成的密码太难记忆的话,可以连接 MySQL 之后进行修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'mike.8080';
这里可能会提示 Your password does not satisfy the current policy requirements
,意思是您的密码不符合当前规定的要求,你要么就把你的密码设置得复杂点,要么就去降低密码的校验规则。
在 Linux 上安装 MySQL 时会自动安装一个校验密码的插件,默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。修改密码时新密码是否符合当前的策略,不满足则会提示ERROR
官网上能查到这个密码校验的规则,文档中搜索:validate_password
所以可以将这个限制密码位数设小一点,复杂度类型调底一点
# 将密码复杂度校验调整简单类型
set global validate_password.policy = 0;
# 设置密码最少位数限制为 4 位
set global validate_password.length = 4;
就可以设置较为简单的密码了。
(2)创建用户与权限分配
默认的 root 用户只能当前节点localhost访问,是无法远程访问的,我们还需要创建一个新的账户,用于远程访问
语法格式:CREATE USER <用户名> [ IDENTIFIED ] BY [ PASSWORD ] <口令>
# mysql 8.0 以下
create user 'mike'@'%' IDENTIFIED BY 'mike8080';
# mysql 8.0
create user 'mike'@'%' IDENTIFIED WITH mysql_native_password BY 'mike8080';
PS: mysql8.0 的默认密码验证不再是 password 。所以在创建用户时,create user ‘username’@‘%’ identified by ‘password’; 客户端是无法连接服务的,所以在创建用户的时候需要加上
WITH mysql_native_password
创建完用户之后还需要给用户分配权限,这里我将 mike
这个用户分配了所有的权限
grant all on *.* to 'mike'@'%';
如果你想权限分配得更细一点可参考博客:mysql给用户分配权限
六、可能遇到的问题
(1)启动 MySQL 时提示 Failed to start mysqld.service: Unit not found.
如果看到这个提示的话说明 mysql 安装失败了,我的建议是卸载重新安装。
(2)安装 rpm 包时提示 依赖检测失败
解决办法:卸载mariadb-libs
rpm -e mariadb-libs --nodeps
再重新安装失败的那个 rpm 包
(3)远程连接时出错
这个错误提示出现的可能有很多,我就列举几个我能想到的吧
- 首先去检查你的 MySQL 是否关掉了,如果关了的话重启再连接
- 服务器上面的防火墙是否是开着的状态,或者 3306 的端口是否对外开放
- 如果你的服务器是云服务器的话,需要去云服务器上面开放 3306 的端口
第一种情况我就不赘述了,如果你的 MySQL 是安装在虚拟机上面的话,简单粗暴的方式是直接关闭防火墙
# 关闭防火墙
systemctl stop firewalld.service
# 查看防火墙的状态
firewall-cmd --state
# 禁止firewall开机启动
systemctl disable firewalld.service
或者为了安全,只开放特定的端口号,MySQL 默认端口是 3306
# 关闭防火墙
systemctl stop firewalld.service
# 3306 端口对外开放
firewall-cmd --remove-port=3306/tcp --permanent
# 重启防火墙
firewall-cmd --reload
但是,如果你 MySQL 并不是安装在虚拟机上的,而是放到云服务器上面,那你必须还得在云服务上面开放这几个端口
比方说我的 MySQL 是运行在 某某云 上面的,我就得做如下设置:
找到我的服务器,点击 更多,选择 管理
进入下一个页面之后,选择 防火墙
添加 3306
端口对外开放
测试连接
参考博客:
CentOS7系统安装MySQL指导手册
MySQL如何创建用户
MySQL创建用户(CREATE USER)
MySQL 8.0 配置mysql_native_password身份验证插件的密码
mysql给用户分配权限
linux安装mysql教程超级详细
目录
1、进入mysql官网,然后选择【linux-Generic】
2、选择操作系统版本,选择【linux-Generic(glibc 2.12)(x86,64-bit)】
3、选择【Compressed TAR Archive】进行下载
19、执行【flush privileges;】使密码立即生效
一、mysql官网下载地址
https://dev.mysql.com/downloads/mysql/
二、详细安装步骤
1、进入mysql官网,然后选择【linux-Generic】
这里我选着的是截止目前最新的mysql版本,自己可以根据自己需求下对应的版本。
2、选择操作系统版本,选择【linux-Generic(glibc 2.12)(x86,64-bit)】
3、选择【Compressed TAR Archive】进行下载
4、复制下载链接地址 或者 直接点击下载
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
5、进入【/usr/local/】目录下
cd /usr/local/
6、下载安装包
下载方式:
1、通过wget直接下载到/usr/local路径下【这里使用这种方式】
2、通过再别的地方下载后复制到/usr/local路径下
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
7、解压安装包
tar xvJf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
8、重命名文件夹
mv mysql-8.0.26-linux-glibc2.12-x86_64 mysql
9、创建用户组以及用户和密码
groupadd mysql
useradd -g mysql mysql
10、授权用户
chown -R mysql.mysql /usr/local/mysql
11、切换到bin目录下
cd bin
12、初始化数据库
./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --initialize --lower-case-table-names=1
初始化参数说明:
【--user=mysql】:安装mysql,用户身份是mysql用户组。
【--basedir=/usr/local/mysql】:指定了安装 MySQL 的安装路径。
【--datadir=/usr/local/mysql/data/】:指定了 MySQL 的数据库文件放在什么路径下。
【--initialize】:初始化。
【--lower-case-table-names=1】:是否数据目录所在的文件系统对文件名的大小写敏感。0-大小写敏感;1-大小写不敏感;2-大小写不敏感(注:只在对大小写不敏感的文件系统上适用)。
linux下lower_case_table_names默认值为 0
Windows下默认值是 1
Mac OS下默认值是 2
大小写区分规则如下
linux下:
数据库名与表名是严格区分大小写的;
表的别名是严格区分大小写的;
列名与列的别名在所有的情况下均是忽略大小写的;
变量名也是严格区分大小写的;
windows下:
都不区分大小写
Mac OS下(非UFS卷):
都不区分大小写
初始化命令执行后,在最后会显示初始密码,记得一定要先保存下来,第一次登录需要使用。
13、编辑my.cnf文件
vi /etc/my.cnf
编辑内容如下【可供参考】:
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
character-set-server=UTF8MB4
lower_case_table_names = 1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
# [mysqld_safe]
# log-error=/usr/local/mysql-8.0/logs/mysqld-error.log
# pid-file=/tmp/mysqld.pid
14、添加mysql服务到系统服务中
cp -a ./support-files/mysql.server /etc/init.d/mysql
15、授权以及添加服务
chmod +x /etc/init.d/mysql
chkconfig --add mysql
14、启动mysql
service mysql start
启动这里有个坑 我话了好多时间来填坑【记录一下】
【现象】:如果在初始化数据库的参数有【lower-case-table-names=1】,并且在my.cnf文件中没有添加。
当运行【service mysql start
】命令时会报错。
【解决方案】:编辑my.cnf文件,将【lower-case-table-names=1】参数加入【mysqld】下边。
15、查看启动状态
service mysql status
16、将mysql命令添加到服务
ln -s /usr/local/mysql/bin/mysql /usr/bin
17、登录mysql密码,使用之前初始密码
mysql -uroot -p
18、修改【root】用户的密码
其中【!QAZ1qaz】是新的密码,自己根据自己情况进行设置。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '!QAZ1qaz';
19、执行【flush privileges;】使密码立即生效
flush privileges;
20、选择mysql数据库
use mysql;
21、修改远程连接并立即生效
update user set host='%' where user='root';
flush privileges;
……
帮助他人,快乐自己,最后,感谢您的阅读!
所以如有纰漏或者建议,还请读者朋友们在评论区不吝指出!
个人网站…知识是一种宝贵的资源和财富,益发掘,更益分享…
以上是关于Linux-安装MySQL(详细教程)的主要内容,如果未能解决你的问题,请参考以下文章