一、MySQL安装部署-单实例(Linux)

1. 安装前的准备工作

1.1 支持的平台(了解)

具体可以参考官方的链接(本次安装OS为centos8)https://www.mysql.com/support/supportedplatforms/database.html。
image

1.2 确定要安装的版本

  • C:表示为社区版本,属于开源免费版本(选择MySQL Community Server)
  • E:表示为企业版本,属于开源营利版本

1.2.1 版本号说明和选择

MySQL 8.0中的命名方案,是使用由三个数字和一个可选后缀组成的发行版名称(例如,mysql-8.0.34)。发行版名称中的数字解释如下:

  • 第一个数字(8)是主要版本号。
  • 第二个数字(0)是版本号。主要和次要数字一起构成发布系列编号。序列号描述了稳定的功能集。
  • 第三个数字(34)是发布系列中的版本数。对于每个新的bug修复版本,这是递增的;对于新版本,它可能总是0。对于像MySQL8.0这样的bug修复系列,该系列中的最新版本是最佳选择。

1.2.2 发行版本的格式选择

选择要安装的MySQL版本后,还要决定为您的操作系统安装哪种发行版格式,在Linux系统中常见的部署安装方式:

序号 安装方式 特征说明
01 采用二进制方式安装 直接解压缩二进制程序包,进行简单的配置和初始化操作即可
02 采用rpm包方式安装 需要从官方网站下载rpm程序包,并且需要考虑系统环境的兼容性,解决软件程序包依赖
03 采用yum包方式安装 需要根据官方网站说明,配置yum下载的仓库源信息,在联网情况下进行安装部署
04 采用源码包方式安装 需要从官方网站下载源码程序包,并且需要解决程序包依赖问题,以及需要采用编译安装,可以定制

对于大多数情况,二进制发行版是正确的选择,二进制发行版在许多平台上以原生格式提供。发行版也以更通用的格式提供,例如Zip存档或压缩的tar文件。在Windows上,您可以使用MySQLInstaller安装二进制发行版。

1.2.3 选择依据

1.2.3.1 需求和功能

  • 功能和特性:根据应用程序需求选择合适的功能和特性。
  • 性能需求:需要处理大量的并发请求或存储大量数据,需要选择性能更优的MySQL版本。
  • 安全性:考虑MySQL版本的安全性,选择已修复已知安全漏洞的版本。

1.2.3.2 社区支持和文档

  • 社区活跃度:MySQL社区版的优势之一是有一个活跃的社区,提供了丰富的文档、教程和讨论论坛。选择社区支持活跃的版本有助于您在使用过程中获得帮助。

1.2.3.3 兼容性

  • 与其他软件的兼容性:确保所选的MySQL版本与您的应用程序、中间件以及其他数据库相关软件兼容。

1.2.3.4 升级和维护

  • 升级路径:考虑所选MySQL版本的升级路径和未来版本的支持情况。选择一个有稳定升级路径和长期支持的版本可以减少未来的维护成本。

1.3 获取MySQL

查看MySQL下载页面https://dev.mysql.com/downloads/,了解有关MySQL当前版本的信息和下载说明。
(1)选择“MySQL Community Server”
image
(2)选择对应的数据库版本和操作系统的版本(比如demo中使用的是centos 8,gliabc:2.28)
image

查看gliab的版本

ldd --version|grep lib
ldd (GNU libc) 2.28

3)下载(需要注册账号,登录

wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.43-linux-glibc2.28-x86_64.tar
ll
total 1377452
-rw-r--r--. 1 root root 1410508800 Jul 10 04:42 mysql-8.0.43-linux-glibc2.28-x86_64.tar

MySQL压缩的tar文件二进制发行版的名称格式为mysql-VERSION-OS.tar.xz,其中VERSION是一个数字(例如,8.0.42),OS表示该发行版适用的操作系统类型(例如,pc-linux-i686winx64)。

还有适用于Linux通用二进制发行版的MySQL压缩tar文件的“最小安装”版本,其文件名格式为mysql-VERSION-OS-GLIBCVER-ARCH-minimal.tar.xz。最小安装发行版不包含调试二进制文件,并且去除了调试符号,这使其比常规二进制发行版小得多。如果您选择安装最小安装发行版,请记住在后续说明中根据文件名格式的差异进行调整。

1.4 使用MD5校验包完整性

下载MySQL软件包后,应确保其MD5校验和与MySQL下载页面上提供的校验和一致。每个软件包都有各自的校验和,你可以将其与所下载的软件包进行比对验证。

每个操作系统和设置都提供了自己版本的MD5校验和检查工具。通常,该命令名为 md5sum,也可能名为 md5,在Linux上,它是 GNU文本实用程序 软件包的一部分,该软件包可用于多种平台。
Linux示例:

md5sum mysql-8.0.43-linux-glibc2.28-x86_64.tar
$>39afc00bef81d9cb1e6512ec4f0e862a  mysql-8.0.43-linux-glibc2.28-x86_64.tar

你应该验证生成的校验和(十六进制数字字符串)是否与相应软件包正下方下载页面上显示的校验和一致。

1.5 安装相关目录(二进制)

不同的安装类型(例如,原生软件包、二进制压缩包和源码压缩包)的安装布局有所不同,这可能会在管理不同系统或使用不同安装源时造成混淆。各个布局在相应的安装类型或平台章节中给出,二进制安装的布局如下所述。
image

2 安装MySQL(通用二进制文件在Linux-centos8上)

本节介绍如何在Unix/Linux平台上从压缩的tar文件二进制发行版安装MySQL。有关针对MySQL安全功能的Linux通用二进制发行版安装说明,请参阅《安全部署指南》

2.1 安装前操作系统准备工作

(1)卸载其他版本的mysql软件和组件
如果您之前使用操作系统自带的软件包管理系统(如Yum或APT)安装过MySQL,那么使用原生二进制文件进行安装时可能会遇到问题。请确保已完全移除之前安装的MySQL(使用您的软件包管理系统),并且所有额外的文件(如旧版本的数据文件)也已被移除。您还应检查诸如/etc/my.cnf之类的配置文件或/etc/mysql目录并将其删除。

yum remove  -y mysql*

(2)MySQL依赖libaio
如果本地未安装此库,数据目录初始化及后续的服务器启动步骤将会失败。如有必要,请使用相应的软件包管理器进行安装。例如,在基于Yum的系统上:

yum search libaio  # search for info
yum install -y libaio # install library

(3)安装ncurses
默认不会安装文件/lib64/libtinfo.so.5,而MySQL客户端 bin/mysql 在使用mysql-VERSION-el7-x86_64.tar.gz 和mysql-VERSION-linux-glibc2.12-x86_64.tar.xz 软件包时需要该文件。

yum install -y ncurses-compat-libs

注意:yum 源需要配置好,这里centos 8的yum源可以这样配置:

mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
yum clean all
yum makecache
yum repolist

2.2 安装过程

要安装并使用MySQL二进制发行版,整体的命令序列如下:

id mysql
groupadd mysql
useradd -r -g mysql -s /bin/false mysql


cd /usr/local
tar xvf tar -xvf mysql-8.0.43-linux-glibc2.28-x86_64.tar
tar -xf mysql-8.0.43-linux-glibc2.28-x86_64.tar.xz
ln -s mysql-8.0.43-linux-glibc2.28-x86_64 mysql

$>echo 'export PATH=/usr/local/mysql/bin:$PATH'>>/etc/profile
$>source /etc/profile
$>mysql -V

cd mysql
mkdir -p /data/3306/{logs,binlog,relaylog,tmp,data}
chown -R mysql:mysql /data/


mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data

注意:此过程假定您拥有系统的root(管理员)访问权限。

2.2.1 创建一个MySQL用户和组

如果你的操作系统尚未有用于运行[mysqld]的用户和组,则需要创建它们。以下命令将添加mysql组和mysql用户。如果你希望使用其他名称来代替mysql作为用户和组的名称,请在以下命令中替换相应的名称。useraddgroupadd的语法在不同版本的Unix/Linux上可能略有不同,或者它们可能有不同的名称,如adduseraddgroup

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

注意:由于用户仅用于确定所有权,而非登录目的,因此 useradd 命令使用 -r-s /bin/false 选项来创建一个对服务器主机没有登录权限的用户。如果您的 useradd 不支持这些选项,请省略它们。

2.2.2 获取并解压发行版

选择你要解压发行版的目录,并切换到该目录下。此处的示例是将发行版解压到 /usr/local 下。因此,本说明假定你有权限在 /usr/local 中创建文件和目录。如果该目录受保护,你必须以 root 身份执行安装。

cd /usr/local

解压发行版,这将创建安装目录。如果tar支持z选项,它可以解压并展开发行版:

tar xvf tar -xvf mysql-8.0.43-linux-glibc2.28-x86_64.tar
tar -xf mysql-8.0.43-linux-glibc2.28-x86_64.tar.xz

“tar命令会创建一个名为mysql-VERSION-OS的目录。”

注意:在MySQL Server8.0.12中,压缩算法从Gzip改为XZ;通用二进制文件的扩展名从.tar.gz改为.tar.xz。

已知GNU tar 可以正常工作。某些操作系统提供的标准 tar 无法解压MySQL发行版中的长文件名。你应该下载并安装GNU tar,或者如果有可用的预安装版本,则使用该版本。通常,在GNU或自由软件目录(如 /usr/sfw/bin/usr/local/bin)中,它可能以 gnutargtartar 的形式提供。GNU tar 可从 http://www.gnu.org/software/tar/ 获得。

如果您的tar不支持xz格式,请使用xz命令解压发行版,然后使用tar命令进行解包。将前面的tar命令替换为以下替代命令,以解压缩并提取发行版:

xz -dc /path/to/mysql-VERSION-OS.tar.xz | tar x

接下来,为tar创建的安装目录创建一个符号链接:

ln -s mysql-8.0.43-linux-glibc2.28-x86_64 mysql

ln 命令会创建一个指向安装目录的符号链接。这使您可以更轻松地将其引用为 /usr/local/mysql。为了在使用 MySQL 时无需每次都输入客户端程序的路径名,您可以将 /usr/local/mysql/bin 目录添加到 PATH 变量中:

export PATH=$PATH:/usr/local/mysql/bin

2.2.3 执行安装后设置

2.2.3.1 手动初始化数据目录

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

cd /usr/local/mysql

(2)执行初始化命令
1)--initialize或--initialize-insecure选项
要初始化数据目录,并希望服务器为'root'@'localhost'账户生成一个随机初始密码,使用--initialize或--initialize-insecure选项调用mysqld,创建一个无密码的账户:

  • 使用 --initialize 进行“默认安全”安装(即包括生成随机的初始root密码)。在这种情况下,密码会被标记为过期,您必须选择一个新密码。
  • 使用--initialize-insecure时,不会生成root密码。这存在安全风险;假定您打算在将服务器投入生产使用前及时为该账户设置密码。

注意
服务器会将任何消息(包括任何初始密码)写入到标准错误输出中,如果您在屏幕上看不到这些消息,请查看错误日志。

2)--user=mysql选项
数据库目录和文件由mysql用户所有非常重要,这样日后运行服务器时,服务就拥有对这些目录和文件的读写权限。为确保这一点,使用系统root账户启动mysqld,并按如下所示包含--user选项:

bin/mysqld --initialize --user=mysql
bin/mysqld --initialize-insecure --user=mysql

或者,以mysql用户身份登录,然后执行mysqld,这样就可以在命令中省略--user选项。

注意
如果缺少所需的系统库,数据目录初始化可能会失败。例如,你可能会看到类似这样的错误:

bin/mysqld: error while loading shared libraries:
libnuma.so.1: cannot open shared object file:
No such file or directory

如果发生这种情况,你必须手动或使用系统的软件包管理器安装缺失的库。然后重试数据目录初始化命令。

3)--basedir=和--datadir选项
如果mysqld无法识别安装目录或数据目录的正确位置,可能需要指定其他选项,如--basedir 或--datadir。例如(在一行中输入命令),默认会在当前mysql目录下生成data目录:

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

或者,将相关选项设置放在一个选项文件中,并将该文件的名称传递给mysqld。对于Unix和类Unix系统,假设选项文件名为/opt/mysql/mysql/etc/my.cnf。在文件中添加以下几行:

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

然后按如下方式调用 mysqld(在一行中输入命令,首先使用--defaults-file 选项):

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

重要的
初始化数据目录时,除了用于设置目录位置的选项(如--basedir 或 --datadir),以及必要时的 --user 选项之外,不应指定任何其他选项。MySQL 服务器正常使用期间要使用的选项,可以在初始化后重启服务器时进行设置。有关更多信息,请参阅 --initialize 选项的说明。

不指定base目录,默认就是当前mysql的目录,结果如下:

[root@localhost mysql]# mysqld --initialize --user=mysql
2025-08-01T13:40:51.623181Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.0.43-linux-glibc2.28-x86_64/bin/mysqld (mysqld 8.0.43) initializing of server in progress as process 33010
2025-08-01T13:40:51.636099Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2025-08-01T13:40:51.880633Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2025-08-01T13:40:54.664823Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: gLFcXX_t(8DK

2.2.3.2 初始化过程mysql的相关操作

  1. mysql服务按如下方式检查数据目录是否存在:
    • 如果数据目录不存在,服务器会创建该目录。
    • 如果数据目录存在但不为空(即包含文件或子目录),服务器将在生成错误消息后退出:
[ERROR] --initialize specified but the data directory exists. Aborting.

在这种情况下,请删除或重命名数据目录,然后重试。如果每个条目名称都以句点(.)开头,则允许现有数据目录不为空。

  1. 在数据目录中,服务器会创建mysql系统模式及其表,包括数据字典表、授权表、时区表和服务器端帮助表。

  2. 服务器初始化系统表空间以及管理 InnoDB 表所需的相关数据结构。

    注意
    在mysqld设置好InnoDB系统表空间后,对表空间特性进行某些更改需要设置一个全新的实例。符合条件的更改包括系统表空间中第一个文件的文件名和撤销日志的数量。如果不想使用默认值,请确保在运行mysqld之前,MySQL配置文件中已设置好innodb_data_file_path和innodb_log_file_size配置参数。另外,务必根据需要指定影响InnoDB文件创建和位置的其他参数,例如innodb_data_home_dir和innodb_log_group_home_dir。
    如果这些选项在您的配置文件中,但该文件不在MySQL默认读取的位置,那么在运行mysqld时,使用--defaults-extra-file选项指定文件位置。
    
  3. 服务器会创建一个'root'@'localhost'超级用户账户以及其他保留账户。有些保留账户处于锁定状态,客户端无法使用,但'root'@'localhost'是供管理用途的,你应该为其设置一个密码。
    对于“root'@'localhost'”账户的密码,服务器操作取决于你调用它的方式:

    • 使用--initialize,服务器会生成一个随机密码,将其标记为已过期,并写入一条显示该密码的消息:

      [Warning] A temporary password is generated for root@localhost:
      iTag*AfrH5ej
      
    • 使用--initialize-insecure时,服务器不会生成密码或标记其过期,并会写入一条警告消息:

      [Warning] root@localhost is created with an empty password ! Please
      consider switching off the --initialize-insecure option.
      
  4. 服务器会填充用于 HELP 语句的服务器端帮助表。服务器不会填充时区表。要手动填充,请参阅第7.1.15节,“MySQL服务器时区支持”。

  5. 如果系统变量 init_file 被用于指定一个包含SQL语句的文件,服务器将执行该文件中的语句。此选项使您能够执行自定义的引导序列。

  6. 服务器退出。

3 启动服务器

如果安装中包含 mysqld_safe,请按如下方式启动 MySQL 服务器:

bin/mysqld_safe --user=mysql &

重要的是,MySQL服务应使用非root账户运行。为确保这一点,以root身份运行mysqld_safe,包含--user选项。否则,您应以mysql身份登录执行,可以在命令中省略--user选项。

如果该命令立即失败并打印出 mysqld
ended,请在错误日志中查找相关信息(默认情况下,错误日志是数据目录中的 host_name.err 文件)。

如果服务器无法访问数据目录,或者无法读取 mysql 模式中的授权表,它会将一条消息写入错误日志。如果你忘记通过初始化数据目录来创建授权表,或者在运行初始化数据目录的命令时未使用 --user 选项,就可能出现此类问题。删除 data 目录,并使用 --user 选项运行该命令。

如果启动服务器时遇到问题,可以尝试以下操作:

  • 检查错误日志 ,查看服务器无法启动的原因。日志文件位于数据目录中。名称格式为 host_name.err 和 host_name.log 的文件,其中 host_name 是服务器主机的名称。然后检查这些文件的最后几行。使用 tail 命令来显示这些内容:
tail host_name.err
tail host_name.log
  • 指定你正在使用的存储引擎所需的任何特殊选项。你可以创建一个 my.cnf 文件,并为计划使用的引擎指定启动选项。如果你打算使用支持事务表的存储引擎(InnoDB、NDB),请确保在启动服务器之前已按所需方式对其进行配置。尽管存储引擎会为您省略的选项使用默认值,但Oracle建议您查看可用选项,并为任何默认值不适合您的安装的选项指定显式值。

  • 确保服务器知道在哪里找到数据目录。mysqld 服务器将此目录用作其当前目录。服务器期望在此处找到数据库,也期望在此处写入日志文件。服务器还会将 pid(进程 ID)文件写入数据目录。
    默认数据目录位置在服务器编译时就已硬编码。要确定默认路径设置是什么,请使用 mysqld 并带上 --verbose 和 --help 选项。如果数据目录位于系统的其他位置,请在命令行或选项文件中,使用 --datadir 选项为 mysqld 或 mysqld_safe 指定该位置。否则,服务器将无法正常工作。作为 --datadir 选项的替代方法,你可以使用 --basedir 为 mysqld 指定安装 MySQL 的基础目录位置,然后 mysqld 会在该位置查找 data 目录。

#要检查指定路径选项的效果,请使用这些选项后跟 --verbose 和 --help 选项调用 mysqld。例如,如果将位置更改为安装 mysqld 的目录,然后运行以下命令,它将显示以 /usr/local 作为基本目录启动服务器的效果:
./mysqld --basedir=/usr/local --verbose --help
#你也可以指定其他选项,例如--datadir,但--verbose和--help必须是最后的选项。一旦确定了所需的路径设置,在不使用 --verbose 和 --help 的情况下启动服务器。
#如果mysqld当前正在运行,你可以通过执行以下命令来了解它正在使用的路径设置:
mysqladmin variables
#或者:
mysqladmin -h host_name variables
host_name是MySQL服务器主机的名称。
  • 确保服务器能够访问数据目录。数据目录及其内容的所有权和权限必须允许mysql服务读取和修改它们。
    如果在启动mysqld时出现Errcode 13(意味着Permission denied),这表示数据目录或其内容的权限不允许服务器访问。在这种情况下,你需要更改相关文件和目录的权限,以便服务器有权使用它们。你也可以以root身份启动服务器,但这会引发安全问题,应避免这样做。
#将位置更改为数据目录,并检查数据目录及其内容的所有权,以确保服务器具有访问权限。例如,如果数据目录是 /usr/local/mysql/var,请使用以下命令:
ls -la /usr/local/mysql/var
#如果数据目录或其文件或子目录并非由您用于运行服务器的登录帐户所拥有,请将其所有权更改为该帐户。如果该帐户名为 mysql,请使用以下命令:
chown -R mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql/var
#即使所有权正确,如果系统上运行有其他管理应用程序对文件系统各个部分访问权限的安全软件,MySQL 可能仍无法启动。在这种情况下,重新配置该软件,使mysqld能够访问其正常运行时使用的目录。
  • 验证服务器要使用的网络接口是否可用。
#如果出现以下任何一种错误,则意味着其他某个程序(可能是另一个 mysqld 服务器)正在使用 mysqld 尝试使用的 TCP/IP 端口或 Unix 套接字文件:
      Can't start server: Bind on TCP/IP port: Address already in use
      Can't start server: Bind on unix socket...

#使用 ps 命令来确定是否有其他 mysqld 服务器正在运行。如果有,在再次启动 mysqld 之前关闭该服务器。

#如果没有其他服务器在运行,请执行命令
telnet your_host_name tcp_ip_port_number
#(默认的MySQL端口号是3306。)然后按几次回车键。如果没有收到类似telnet: Unable to connect to remote host:Connection refused这样的错误消息,则说明有其他程序正在使用mysqld试图使用的TCP/IP端口。找出该程序并禁用它,或者使用--port选项让mysqld监听其他端口。在这种情况下,当客户端程序使用TCP/IP连接到服务器时,要为其指定相同的非默认端口号。
  
#该端口可能无法访问的另一个原因是,您正在运行的防火墙阻止了对它的连接。如果是这样,请修改防火墙设置以允许访问该端口。
  如果服务器已启动但您无法连接到它,请确保在 /etc/hosts 中有如下所示的条目:
      127.0.0.1       localhost
- 如果无法启动 mysqld,可以尝试使用 --debug 选项生成跟踪文件来查找问题。

4 初始化后root密码分配

  1. 连接到服务器:
  • 如果您使用了--initialize初始化数据目录,请以root身份连接到服务器:
		mysql -u root -p
	然后,在密码提示符处,输入服务器在初始化过程中生成的随机密码:
	Enter password: (enter the random root password here)
	如果不知道此密码,请查看服务器错误日志。
  • 如果您使用--initialize-insecure初始化数据目录,则可以以root身份无密码连接到服务器:
mysql -u root --skip-password
  1. 连接后,使用 ALTER USER 语句来分配新的root密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';

注意
尝试连接到主机 127.0.0.1 通常会解析到 localhost 账户。但是,如果服务器在启用 skip_name_resolve</b2 的情况下运行,此操作将失败。如果您打算这样做,请确保存在一个可以接受连接的账户。例如,要能够使用 --host=127.0.0.1 或 --host=::1 以 root 身份连接,请创建以下账户:

CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password';
CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password';

可以将这些语句放在一个文件中,使用 init_file 系统变量来执行,正如在 数据目录初始化期间的服务器操作 中所讨论的那样。

5 测试服务器

使用 mysqladmin 来验证服务器是否正在运行。
(1)检查服务是否已启动并响应连接:

mysqladmin version
mysqladmin variables

如果无法连接到服务器,请指定 -uroot 选项以 root 身份进行连接。如果已经为 root 账户设置了密码,还需要在命令行中指定 -p 并在提示时输入密码。例如:

bin/mysqladmin -u root -p version
Enter password: (enter root password here)

mysqladmin version 的输出会因平台和MySQL版本的不同而略有差异,但应该与以下内容类似:

mysqladmin version
    mysqladmin  Ver 14.12 Distrib 8.0.42, for pc-linux-gnu on i686
    ...
    
    Server version          8.0.42
    Protocol version        10
    Connection              Localhost via UNIX socket
    UNIX socket             /var/lib/mysql/mysql.sock
    Uptime:                 14 days 5 hours 5 min 21 sec
    
    Threads: 1  Questions: 366  Slow queries: 0
    Opens: 0  Flush tables: 1  Open tables: 19
    Queries per second avg: 0.000

(2)验证你是否可以关闭服务(如果 root 账户已设置密码,请包含 -p 选项):

mysqladmin -u root shutdown

(3)验证你是否可以再次启动服务。可以通过使用mysqld_safe 或直接调用mysqld 来实现。例如:

mysqld_safe --user=mysql &

(4)验证你可以从服务器检索信息。

使用mysqlshow查看存在哪些数据库:

mysqlshow
    +--------------------+
    |     Databases      |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+

#已安装的数据库列表可能有所不同,但至少始终包括 mysql 和 information_schema。

#如果你指定了数据库名,mysqlshow 会显示该数据库中的表列表:

    bin/mysqlshow mysql
    Database: mysql
    +---------------------------+
    |          Tables           |
    +---------------------------+
    | columns_priv              |
    | component                 |
    | db                        |
    | default_roles             |
    | engine_cost               |
    | func                      |
    | general_log               |
    | global_grants             |
    | gtid_executed             |
    | help_category             |
    | help_keyword              |
    | help_relation             |
    | help_topic                |
    | innodb_index_stats        |
    | innodb_table_stats        |
    | ndb_binlog_index          |
    | password_history          |
    | plugin                    |
    | procs_priv                |
    | proxies_priv              |
    | role_edges                |
    | server_cost               |
    | servers                   |
    | slave_master_info         |
    | slave_relay_log_info      |
    | slave_worker_info         |
    | slow_log                  |
    | tables_priv               |
    | time_zone                 |
    | time_zone_leap_second     |
    | time_zone_name            |
    | time_zone_transition      |
    | time_zone_transition_type |
    | user                      |
    +---------------------------+

(5)使用mysql程序从mysql模式的表中选择信息:

bin/mysql -e "SELECT User, Host, plugin FROM mysql.user"
+------+-----------+-----------------------+
| User | Host      | plugin                |
+------+-----------+-----------------------+
| root | localhost | caching_sha2_password |
+------+-----------+-----------------------+

6 自动启动和停止MySQL

数据库服务启动和关闭方式总结:

序号 启动方式 关闭方式
01 mysqld & kill/pkill/killall (不建议) kill -9 禁用
02 mysqld_safe & kill/pkill/killall (不建议)
03 mysql.server start mysql.server stop
04 service mysqld start (建议) service mysqld stop (建议)
05 systemctl start mysqld systemctl stop mysqld
06 > shutdown
07 mysqladmin -uroot -poldboy123 shutdown
mysqld_safe --user=mysql &
  • 在支持systemd的Linux系统上,你可以使用它来控制服务。
cat <<EOF> /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf 
LimitNOFILE=65535
EOF

cat>/etc/my.cnf<<'EOF'
[mysqld]
datadir=/usr/local/mysql/data
socket=/var/tmp/mysql.sock
port=3306
user=mysql

[mysql.server]
basedir=/usr/local/mysql
EOF

systemctl daemon-reload
#配置开机自启动
systemctl enable mysqld
systemctl is-enabled mysqld

  • 在使用System V风格运行目录(即/etc/init.d和特定运行级别的目录)的系统上,调用mysql.server。此脚本主要在系统启动和关闭时使用。它通常安装后的名称为mysql。mysql.server脚本通过调用mysqld_safe启动服务。
cp support-files/mysql.server /etc/init.d/mysql.server
chmod +x /etc/init.d/mysql.server
chkconfig --add mysql
chkconfig --level 345 mysql on
mysql.server start
mysql.server stop

posted @ 2025-08-02 09:15  Samchensir  阅读(26)  评论(0)    收藏  举报