概述 定义和历史背景 MySQL 是一个广泛使用的开源关系型数据库管理系统(RDBMS)。它最初由瑞典 MySQL AB 公司开发,在 2008 年被 Sun Microsystems 收购,之后 Oracle 又收购了 Sun Microsystems,MySQL 也随之成为 Oracle 旗下的产品。
数据库存储结构 数据库(Database):MySQL 是数据库的集合,每个数据库用于存储相关的数据。
表(Table):数据库包含一个或多个表,表是数据存储的基本单位。表由行(Row)和列(Column)组成。
索引(Index):索引是一种特殊的数据结构,用于提高数据库的查询性能。它类似于书籍的目录,通过创建 索引,可以更快地定位和检索表中的数据。
SQL语言支持 数据定义语言(DDL):用于定义数据库的结构,包括创建(CREATE)、修改(ALTER)和删除(DROR)数据库、表、索引等。 数据操作语言(DML):用于操作表中的数据,主要包括插入(INSERT)、查询(SELECT)、更新(UPDATE)和删除(DELETE)操作。 数据控制语言(DCL):主要用于管理数据库用户的权限,如GRANT(授予权限)和REVOKE(收回权限) MySQL逻辑结构与Linux系统对比: MySQL Linux 库 目录 show databases; ls -l / use mysql cd /mysql 表 普通文件 show tables ls
安装方式 (这里使用机器为 Rocky Linux 9.4 )
二进制安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 wget https://dev.mysql.com/get/Downloads/mysql/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz tar -xvf mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz mv mysql-8.4.3-linux-glibc2.28-x86_64 /usr/local/mysqlgroupadd mysql useradd -r -g mysql -s /bin/false mysql -M mkdir -p /data/mysqlchown -R mysql:mysql /data/mysqlchmod -R 750 /data/mysql/usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/data/mysql --user=mysql echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profilesource /etc/profilecat > /etc/systemd/system/mysql.service << EOF [Unit] Description=MySQL Server After=network.target syslog.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure [Install] WantedBy=multi-user.target EOF cat > /etc/my.cnf << EOF [mysqld] # 基本目录 basedir = /usr/local/mysql # 数据目录 datadir = /data/mysql # PID文件路径 pid-file = /data/mysql/mysql.pid # 套接字文件路径 socket = /tmp/mysql.sock # 监听端口 port = 3306 # 其他常见配置 # 字符集设置 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci # 日志相关配置 log-error = /data/mysql/error.log general_log = 0 general_log_file = /data/mysql/general.log slow_query_log = 1 slow_query_log_file = /data/mysql/slow.log long_query_time = 2 # 内存相关配置 innodb_buffer_pool_size = 128M key_buffer_size = 16M EOF chmod 644 /etc/my.cnfsystemctl daemon-reload systemctl restart mysql systemctl status mysql SHOW VARIABLES;
从源码编译安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 wget https://dev.mysql.com/get/Downloads/mysql/mysql-8.4.3.tar.gz tar -zxvf mysql-8.4.3.tar.gz cd mysql-8.4.3mkdir buildcd buildyum install -y gcc gcc-c++ make cmake ncurses-devel bison wget tar bzip2 zlib zlib-devel gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc openssl openssl-devel sudo dnf install -y rpcgenyum install -y libtirpc-devel wget https://rpmfind.net/linux/centos-stream/9-stream/BaseOS/x86_64/os/Packages/libtirpc-1.3.3-2.el9.x86_64.rpm rpm -ivh libtirpc-1.3.3-2.el9.x86_64.rpm wget https://rpmfind.net/linux/centos-stream/9-stream/CRB/x86_64/os/Packages/libtirpc-devel-1.3.3-2.el9.x86_64.rpm rpm -ivh libtirpc-devel-1.3.3-2.el9.x86_64.rpm cd /rootwget https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.bz2 tar -jxvf boost_1_77_0.tar.bz2 cd mysql-8.4.3/build/cmake .. -DWITH_BOOST=/root/boost_1_77_0 \ -DWITH_ZLIB=bundled \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_SSL=system \ -DWITH_LIBWRAP=0 \ -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock make make install groupadd mysql useradd -r -g mysql -s /bin/false mysql cat > /etc/my.cnf <<EOF [mysqld] # 表示这是 MySQL 服务的配置部分 basedir = /usr/local/mysql # 设置 MySQL 的安装目录为 /usr/local/mysql datadir = /usr/local/mysql/data # 设置 MySQL 的数据存储目录为 /usr/local/mysql/data port = 3306 # 指定 MySQL 服务监听的端口号为 3306,这是 MySQL 的默认端口 socket = /var/lib/mysql/mysql.sock # 指定 MySQL 进程的 socket 文件路径,用于本地客户端连接 user = mysql # 指定运行 MySQL 服务的用户为 mysql,增加安全性 symbolic-links = 0 # 禁用符号链接功能,增加系统安全性 log_error = /var/log/mysql/error.log # 设置错误日志文件的路径,记录 MySQL 服务的错误信息 general_log = 1 # 启用通用查询日志,记录所有执行的查询语句 general_log_file = /var/log/mysql/general.log # 设置通用查询日志的存储路径 slow_query_log = 1 # 启用慢查询日志,用于记录执行时间较长的查询 slow_query_log_file = /var/log/mysql/slow.log # 指定慢查询日志文件的路径 long_query_time = 2 # 设置慢查询的阈值,记录执行时间超过 2 秒的查询 # pid-file = /var/run/mysqld/mysqld.pid pid-file=/usr/local/mysql/mysqld.pid EOF mkdir -p /var/log/mysqlmkdir -p /var/lib/mysqlchown -R mysql:mysql /var/log/mysqlchmod -R 750 /var/log/mysqlchown -R mysql:mysql /usr/local/mysqlchmod -R 750 /usr/local/mysqlmkdir /usr/local/mysql/datachown -R mysql:mysql /usr/local/mysql/datachmod -R 750 /usr/local/mysql/datachown -R mysql:mysql /var/lib/mysqlchmod -R 750 /var/lib/mysql/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure cat > /etc/systemd/system/mysql.service<<EOF [Unit] Description=MySQL Server After=network.target [Service] Type=forking ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize --pid-file=/var/run/mysqld/mysqld.pid ExecStop=/usr/local/mysql/bin/mysqladmin --defaults-file=/etc/my.cnf shutdown User=mysql Group=mysql PIDFile=/var/run/mysqld/mysqld.pid [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable mysql systemctl start mysql /usr/local/mysql/bin/mysql_secure_installation vim /etc/profile export PATH=$PATH :/usr/local/mysql/binsource /etc/profilemysql -uroot -pAg#@190}678900 CREATE USER 'sxs' @'%' IDENTIFIED BY 'Ag#@190}678900' ; GRANT ALL PRIVILEGES ON *.* TO 'sxs' @'%' WITH GRANT OPTION; flush privileges;
yum 安装方式 1 2 3 4 5 6 7 - 本地系统源安装 yum -y install mysql yum -y install mysql-server
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 - 官方源安装(脱离了系统源) scp .\mysql84-community-release-el9-1.noarch.rpm root@192.168.241.130:/root dnf install -y mysql84-community-release-el9-1.noarch.rpm sudo dnf install mysql-server sudo systemctl --now enable mysqld grep 'temporary password' /var/log/mysqld.log mysql -uroot -p SHOW VARIABLES LIKE 'validate_password%' ; set global validate_password.policy=0; set global validate_password.length=1;
通过 MySQL 安装向导(适用于 Windows 环境)