良许Linux教程网 干货合集 Linux系统安装MySQL(超级详细的教程)

Linux系统安装MySQL(超级详细的教程)

MySQL作为一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统那么在Linux系统中如何安装呢?下面良许教程网为大家详细讲解一下Linux系统安装MySQL的详细教程。

Linux系统安装MySQL(超级详细的教程)

MySQL简介:

MySQL是一个小型关系型数据库管理系统,它由 MySQL AB开发、发布和支持。MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass- deployed)的软件中去。MySQL的特点是:   ①面向集合的操作方式   ②开源代码   ③高度非过程化   ④以一种语法结构提供多种使用方式   ⑤语言简洁,易用易学

Linux系统安装MySQL详细步骤:

下载mysql包 注意 在MySQL Server 8.0.12中,压缩算法从Gzip更改为XZ;并且通用二进制文件的文件扩展名从.tar.gz更改为.tar.xz。

安装环境准备阶段

在这里插入图片描述

将xz文件解压为tar文件

 [root@centOS1 opt]# xz -d mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
 [root@centOS1 opt]# ll
 总用量 3300864
 drwxr-xr-x. 2 root root       4096 3月   5 20:08 gcctemp
 -rwxr-xr-x. 1 root root   51681321 3月  12 20:49 gzhxvts1.zip
 -rwxrwxrwx. 1 root root  603019898 6月  14 2018 mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
 -rwxr-xr-x. 1 root root 2651712000 3月  14 16:55 mysql-8.0.19-linux-glibc2.12-x86_64.tar
 
 12345678

解压tar文件

 [root@centOS1 opt]# tar -xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar
 
 12

将解压好的mysql移动到/usr/local/下并重命名为mysql

 [root@centOS1 opt]# mv mysql-8.0.19-linux-glibc2.12-x86_64 /usr/local/mysql
 1

进入到mysql文件夹下并在mysql文件夹下创建data文件夹

 [root@centOS1 opt]# cd /usr/local/mysql/
 [root@centOS1 mysql]# ll
 总用量 432
 drwxr-xr-x.  2 7161 31415   4096 12月 10 07:32 bin
 drwxr-xr-x.  2 7161 31415   4096 12月 10 07:32 docs
 drwxr-xr-x.  3 7161 31415   4096 12月 10 07:32 include
 drwxr-xr-x.  6 7161 31415   4096 12月 10 07:32 lib
 -rw-r--r--.  1 7161 31415 405571 12月 10 03:53 LICENSE
 drwxr-xr-x.  4 7161 31415   4096 12月 10 07:32 man
 -rw-r--r--.  1 7161 31415    687 12月 10 03:53 README
 drwxr-xr-x. 28 7161 31415   4096 12月 10 07:32 share
 drwxr-xr-x.  2 7161 31415   4096 12月 10 07:32 support-files
 [root@centOS1 mysql]# mkdir data
 12345678910111213

创建mysql用户和mysql组并将mysql及下所有文件授权给mysql groupadd mysql –创建mysql用户组组

 [root@centOS1 mysql]# groupadd mysql
 1

useradd -r -g mysql mysql –创建mysql用户并添加到mysql用户组中

 [root@centOS1 mysql]# useradd -r -g mysql mysql
 1

给mysql用户设置密码

 [root@centOS1 local]# passwd mysql
 1

chown -R mysql mysql/ –将mysql目录访问权限赋为myql用户

 [root@centOS1 mysql]# chown -R mysql /usr/local/mysql/
 1

chgrp -R mysql mysql/ –改变mysql目录的用户组属于mysql组

 [root@centOS1 mysql]# chgrp -R mysql /usr/local/mysql/
 1

为mysql添加环境变量

 [root@centOS1 mysql]# vim /etc/profile
 1

编辑内容添加如下代码 在这里插入图片描述 执行下面代码使立即生效

 [root@centOS1 mysql]# source /etc/profile
 
 12

mysql安装设置及测试阶段

在MySQL 8.0中,默认的身份验证插件已从更改 mysql_native_password为 caching_sha2_password,并且 ‘root’@’localhost’管理帐户caching_sha2_password默认使用。如果您希望该root帐户使用以前的默认身份验证插件(mysql_native_password),需要在配置文件中进行设置。

将位置更改为MySQL安装的顶级目录,通常是 /usr/local/mysql(根据需要调整系统的路径名):

 [root@centOS1 mysql]# cd /usr/local/mysql/
 
 12

官网原文:在mysql文件夹下穿件mysql-files文件夹,并设置文件用户组及权限 在这里插入图片描述

 [root@centOS1 mysql]# cd /usr/local/mysql/
 [root@centOS1 mysql]# mkdir mysql-files
 [root@centOS1 mysql]# chown mysql:mysql mysql-files/
 [root@centOS1 mysql]# chmod 750 mysql-files/
 1234

使用服务器初始化数据目录,包括mysql包含初始MySQL授权表的架构,该表确定如何允许用户连接到服务器。例如:

 [root@centOS1 mysql]# bin/mysqld --initialize --user=mysql --console
 2020-03-14T10:19:16.744808Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.19) initializing of server in progress as process 4282
 2020-03-14T10:19:18.697090Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ei

记住生成的密码:ei

 [root@centOS1 mysql]# service mysqld start
 Starting MySQL.                                            [确定]
 12

关闭mysql服务

 [root@centOS1 mysql]# service mysqld stop
 Shutting down MySQL..                                      [确定]
 12

推荐使用的服务启动方式

mysqld_safe命令

mysqld_safe是在Unix上启动mysqld服务器的推荐方法。mysqld_safe增加了一些安全特性,例如在发生错误时重新启动服务器,并将运行时信息记录到错误日志。

用法:

mysqld_safe [OPTIONS] 参数解释:

 --help                              # 显示帮助信息并退出
 --basedir                           # mysql的安装路径
 --datadir                           # 数据的存放路径
 --no-defaults                       # 不读取系统默认文件
 --defaults-file=FILE                # 使用制定的默认文件
 --defaults-extra-file=FILE          # 同时使用指定文件的默认值
 --ledir=DIRECTORY                   # 在指定目录中查找mysqld
 --open-files-limit=LIMIT            # 限制打开的文件数
 --core-file-size=LIMIT              # 将核心文件限制为指定的大小
 --timezone=TZ                       # 设置系统时区
 --malloc-lib=LIB                    # 预加载共享库(如果可用)
 --mysqld=FILE                       # 使用指定的文件作为mysqld
 --mysqld-version=VERSION            # 使用mysql-version作为mysqld
 --nice=NICE                         # 设置mysqld的调度优先级
 --plugin-dir=DIR                    # 插件在dir或dir/version下,如果给出了版本
 --skip-kill-mysqld                  # 不要试图杀死多余的mysqld进程
 --syslog                            # 使用“logger”将消息记录到syslog
 --skip-syslog                       # 将消息记录到错误日志(默认)
 --syslog-tag=TAG                    # 将-t“mysqld tag”传递给“logger”
 --mysqld-safe-log-timestamps=TYPE   # 类型必须是一个国际标准(ISO 8601 UTC)
 --skip-grent-tables           #忘记管理员密码后可使用,不使用授权表
 123456789101112131415161718192021

实例:

1、使用mysqld_safe启动MySQL数据库

 [root@centOS1 ~]# mysqld_safe --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql &
 1

my.cnf文件的加载顺序

2、mysqld_safe通过配置文件启动MySQL数据库,如果不指定配置文件,系统则首先找mysql安装目录下的my.cnf ,如果没有在找/etc/my.cnf,在没有则使用默认的配置参数启动

 mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
 1

注意:如果用于–initialize-insecure初始化数据目录,请使用 root不带密码的方式连接到服务器 :

 [root@centOS1 mysql]# mysql -u root --skip-password
 1

登录后修改默认密码:

 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
 Query OK, 0 rows affected (0.03 sec)
 
 123

设置远程连接并重新设置密码编码规则:

 mysql> use mysql;
 mysql> ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'root';
 Query OK, 0 rows affected (0.03 sec)
 123

初始化参数说明

参数:–initialize 或 –initialize-insecure –initialize默认生成一个随机的密码,改密码被标记为过期的,登录之后被要求设置一个新密码,这种方式是推荐使用的,这是一种安全的初始化方式

 [Warning] A temporary password is generated for root@localhost:
 iTag*AfrH5ej
 12

–initialize-insecure默认不生成一个密码,不推荐使用,并给出警告

 [Warning] root@localhost is created with an empty password ! Please
 consider switching off the --initialize-insecure option.
 12

官方解释: 在这里插入图片描述 参数:–user 在Unix和类Unix系统中,mysql登录帐户拥有的数据库目录和文件非常重要,这样服务器在以后运行时可以对它们进行读写访问。要确保这一点,请从系统根帐户启动mysqld并包括–user选项.或者,在以mysql登录时执行mysqld,在这种情况下,可以从命令中省略–user选项。 官方解释: 在这里插入图片描述 参数:–basedir或 –datadir 如果不是官方指定的默认目录安装,或者说需要用户显示的指定数据库的根目录和data目录则需要设置这两个参数,例如:

 bin/mysqld --initialize --user=mysql --basedir=/opt/mysql/mysql --datadir=/opt/mysql/mysql/data
 1

或者,将相关的选项设置放在选项文件中,然后将该文件的名称传递给 mysqld。假设选项文件名为 /opt/mysql/mysql/etc/my.cnf。将这些行放在文件中:

 [mysqld]
 basedir=/opt/mysql/mysql
 datadir=/opt/mysql/mysql/data
 123

然后按以下方式调用mysqld(–defaults-file=配置文件的位置 ):

 bin/mysqld --defaults-file=/opt/mysql/mysql/etc/my.cnf --initialize --user=mysql
 1

数据目录初始化期间的服务器操作

注意 服务器执行的数据目录初始化序列不能代替mysql_secure_installation和 mysql_ssl_rsa_setup执行的动作 。请参见 https://dev.mysql.com/doc/refman/8.0/en/mysql-secure-installation.html“ mysql_secure_installation-提高MySQL安装安全性”https://dev.mysql.com/doc/refman/8.0/en/mysql-ssl-rsa-setup.html“ mysql_ssl_rsa_setup-创建SSL / RSA文件”。

扩展内容

数据目录初始化会在mysql架构中创建时区表,但不会填充它们。设置官网地址 https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html

如果要部署自动支持安全连接的服务器,请使用 mysql_ssl_rsa_setup实用程序创建默认的SSL和RSA文件:

 [root@centOS1 mysql]# bin/mysql_ssl_rsa_setup
 1

在没有任何选项文件的情况下,服务器以其默认设置启动。(请参见 第5.1.2节“服务器配置默认值”。)要显式指定MySQL服务器在启动时应使用的选项,请将它们放在选项文件中,例如 /etc/my.cnf或 /etc/mysql/my.cnf。例如,您可以使用选项文件来设置 secure_file_priv系统变量。 一、SSL介绍

SSL(Secure Socket Layer:安全套接字层)利用数据加密、身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证。

SSL协议提供的功能主要有: 1、 数据传输的机密性:利用对称密钥算法对传输的数据进行加密。 2.、身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。 3、 消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。 如果用户的传输不是通过SSL的方式,那么其在网络中数据都是以明文进行传输的,而这给别有用心的人带来了可乘之机。所以,现在很多大型网站都开启了SSL功能。同样地,在我们数据库方面,如果客户端连接服务器获取数据不是使用SSL连接,那么在传输过程中,数据就有可能被窃取

如果启用的ssl,当运行完这个命令后,默认会在data_dir目录下生成以下pem文件,这些文件就是用于启用SSL功能的:

 [root@centOS1 data]# ll *.pem
 -rw-------. 1 mysql mysql 1676 3月  14 18:19 ca-key.pem
 -rw-r--r--. 1 mysql mysql 1112 3月  14 18:19 ca.pem
 -rw-r--r--. 1 mysql mysql 1112 3月  14 18:19 client-cert.pem
 -rw-------. 1 mysql mysql 1680 3月  14 18:19 client-key.pem
 -rw-------. 1 mysql mysql 1676 3月  14 18:19 private_key.pem
 -rw-r--r--. 1 mysql mysql  452 3月  14 18:19 public_key.pem
 -rw-r--r--. 1 mysql mysql 1112 3月  14 18:19 server-cert.pem
 -rw-------. 1 mysql mysql 1676 3月  14 18:19 server-key.pem
 [root@centOS1 data]#
 12345678910

执行:mysql> show global variables like ‘%ssl%’;命令可以看到have_ssl 值为yes标识已经开启

 mysql> show global variables like '%ssl%';
 +--------------------+-----------------+
 | Variable_name      | Value           |
 +--------------------+-----------------+
 | have_openssl       | YES             |
 | have_ssl           | YES             |
 | mysqlx_ssl_ca      |                 |
 | mysqlx_ssl_capath  |                 |
 | mysqlx_ssl_cert    |                 |
 | mysqlx_ssl_cipher  |                 |
 | mysqlx_ssl_crl     |                 |
 | mysqlx_ssl_crlpath |                 |
 | mysqlx_ssl_key     |                 |
 | ssl_ca             | ca.pem          |
 | ssl_capath         |                 |
 | ssl_cert           | server-cert.pem |
 | ssl_cipher         |                 |
 | ssl_crl            |                 |
 | ssl_crlpath        |                 |
 | ssl_fips_mode      | OFF             |
 | ssl_key            | server-key.pem  |
 +--------------------+-----------------+
 17 rows in set (0.01 sec)
 1234567891011121314151617181920212223

在连接数据库执行 \s 命令可以看到SSL:Cipher in use is TLS_AES_256_GCM_SHA384标志是ssl方式连接。注意:如果是本地连接则显示:Not in use

 SSL:   Not in use
 Current pager:  stdout
 Using outfile:  ''
 123
 mysql> \s
 --------------
 mysql  Ver 8.0.19 for Win64 on x86_64 (MySQL Community Server - GPL)
 
 Connection id:          21
 Current database:
 Current user:           root@192.168.11.1
 SSL:                    Cipher in use is TLS_AES_256_GCM_SHA384
 Using delimiter:        ;
 Server version:         8.0.19 MySQL Community Server - GPL
 Protocol version:       10
 Connection:             192.168.11.129 via TCP/IP
 Server characterset:    utf8mb4
 Db     characterset:    utf8mb4
 Client characterset:    utf8
 Conn.  characterset:    utf8
 TCP port:               3306
 Binary data as:         Hexadecimal
 Uptime:                 29 min 5 sec
 
 Threads: 7  Questions: 148  Slow queries: 0  Opens: 294  Flush tables: 3  Open tables: 214  Queries per second avg: 0.084
 --------------
 12345678910111213141516171819202122

linux系统下安装多个mysql版本共存,并分别启动配置

安装配置要注意的地方: 1,安装的目录不要一样,不管你是用管理软件安装的,还是手动安装的,多个mysql不要安装在同一个目录。 2,数据库文件存放的地方,不要相同,也就是my.cnf里面的datadir的的设置不要一样 3,mysql的启动端口不要一样,默认的3306,多个时候可以13306,13307等最好设置成10000以外的。 4,mysql的服务socket不要设置成一样,就是my.cnf里面socket的设置不要一样 5,mysql服务的pid文件不要设置成一样,就是my.cnf里面pid-file的设置不要一样 看一下其中一个my.cnf中mysqld的配置

 [root@centOS1 ~]# cat /etc/my.cnf
 [mysqld]
 # 设置3306端口
 port=3307
 # 设置mysql的安装目录
 basedir=/usr/local/mysql
 # 设置mysql数据库的数据的存放目录
 datadir=/usr/local/mysql/data
 pid-file=centOS1.pid
 socket=/tmp/mysql.sock
 # 允许最大连接数
 max_connections=200
 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
 max_connect_errors=10
 # 服务端使用的字符集默认为UTF8
 #character-set-server=utf8
 # 创建新表时将使用的默认存储引擎
 #default-storage-engine=INNODB
 # 默认使用“mysql_native_password”插件认证
 default_authentication_plugin=mysql_native_password
 [mysql]
 # 设置mysql客户端默认字符集
 #default-character-set=utf8
 [client]
 # 设置mysql客户端连接服务端时默认使用的端口
 port=3307
 #default-character-set=utf8
 123456789101112131415161718192021222324252627

mysql服务设置开机自启

将/usr/local/mysql/support-files/mysql.service 复制到/etc/init.d/mysqld

 [root@centOS1 bin]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
 1

给文件授予可执行权限

 [root@centOS1 bin]# chmod +x /etc/init.d/mysqld
 1

添加服务

 [root@centOS1 bin]# chkconfig --add mysqld
 1

检查服务是否添加成功

 [root@centOS1 bin]# chkconfig --list |grep mysqld
 mysqld          0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
 12

删除自启服务命令

 [root@centOS1 bin]# chkconfig --del 服务名
 1

权限说明

在这里插入图片描述 从上图片中红色框从左到右是第一组到第六组进行说明: 第一组:d或者-标识:是目录还是文件 第二组:rwx标识:文件或目录所有者的权限 第三组:r-x标识:文件所在组用户对文件的权限 第四组:r-x标识:其他组用户对文件或目录的权限 第五组:mysql标识:文件所有者 第六组:mysql标识:文件所在组

一般是三个数字: chmod 750 “授权文件名” 第一个数字表示文件所有者的权限 第二个数字表示文件所有者同属一个用户组的其他用户的权限 第三个数字表示其他用户组的权限。 权限分为三种:读(r=4),写(w=2),执行(x=1)。结合起来还有可读可执行(rx=5=4+1),可读可写(rw=6=4+2)等。 所以,chmod 755设置用户的权限为: 1.文件所有者可读可写可执行 –7 2.与文件所有者同属一个用户组的其他用户可读可执行 –5 3.其他用户组可读可执行 –5 命令: 在这里插入图片描述

 [u g o a] 含义
 u user 表示该文件的所有者
 g group 表示与该文件的所有者属于同一组( group )者,即用户组
 o other 表示其它用户组
 a all 表示这三者皆是
 
 [+  -  =] 含义
 + 增加权限
 - 撤销权限
 = 设定权限
 
 [r   w   x] 含义
 r read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。
 w write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。
 x excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。
 
 chmod u+rw filename   说明对于filname, 只赋予user用户, read、write权限
 chmod u+rwx, g+rw  filename  说明对filename,赋予user用户read、write、excute权限;赋予group用户read、write权限
 
 12345678910111213141516171819

mysql设置权限一般赋权为750

至此已经成功的在Linux系统中安装MySQL,大家学会了吗?快去动手实践一下吧。

以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你!

137e00002230ad9f26e78-265x300

本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部