MySQL 服务是一个真正的多线程, 多用户的 SQL 数据库服务, 凭借其高性能, 高可靠和易于使用的特性, 成为服务器领域中最受欢迎的开源数据库系统. 为了确保 MySQL 数据库功能的完整性. 可定制性, 将采用源代码编译的方式安装 MySQL 数据库系统.
案例老版本 (MySQL-5.5.24.tar.gz)
环境 CentOS7 系统
•MySQL 的编译安装
1. 准备工作
安装一系列的编译安装 MySQL5.5 的环境包 (yum 安装)
•gcc,gcc-c++
//c 语言编译
•cmake
//MySQL 编译
•ncurses-devel
// 字符终端屏幕控制基本库
•bison
// 语法分析器
•libaio-devel
- // 支持同步 I/O
- yum install gcc gcc-c++ make cmake ncurses-devel bison libaio-devel -y
2. 源码编译安装
(1) 将下载的 MySQL 源码包解压到 / opt 目录下.
tar zxvf MySQL-5.5.24.tar.gz -C /opt/
(2) 切换到展开的源码目录 MySQL-5.5.22, 进行配置, cmake 编译.
- cd MySQL-5.5.24
- cmake \
- -DCMAKE_INSTALL_PREFIX=/usr/local/MySQL \
- -DDEFAULT_CHARSET=utf8 \
- -DDEFAULT_COLLATION=utf8_general_ci \
- -DWITH_EXTRA_CHARSETS=all \
- -DSYSCONFDIR=/etc \
- -DMYSQL_DATADIR=/home/MySQL/ \
- -DMYSQL_UNIX_ADDR=/home/MySQL/MySQL.sock \
- -DWITH_MYISAM_STORAGE_ENGINE=1 \
- -DWITH_INNOBASE_STORAGE_ENGINE=1 \
- -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
- -DENABLED_LOCAL_INFILE=1 \
- -DWITH_SSL=system \
- -DMYSQL_TCP_PORT=3306 \
- -DENABLE_DOWNLOADS=1 \
- -DWITH_SSL=bundled
上述的配置命令中, 各选项的含义如下:
•-DCMAKE_INSTALL_PREFIX: 指定将 MySQL 数据库程序安装到某目录下, 如目录 / usr/local/MySQL.
-DDEFAULT_CHARSET: 指定默认使用的字符集编码, 如 utf8.
•-DDEFAULT_COLLATION: 指定默认使用的字符集校对规则, utf8_general_ci 是适用于 UTF-8 字符集的通用规则.
•-DWITH_EXTRA_CHARSETS: 指定额外支持的其他字符集编码.
•-DSYSCONFDIR: 指定初始化参数文件目录
•-DMYSQL_DATADIR: 指定数据库存放的路径, 如 / home/MySQL.
•-DMYSQL_UNIX_ADDR: 指定数据库连接文件存放的路径.
•-DENABLED_LOCAL_INFILE:: 指定读取数据的方式
•-DMYSQL_TCP_PORT: 指定 MySQL 的端口号
•-DWITH_MYISAM_STORAGE_ENGINE=1 : 指定四种存储引擎机制
- -DWITH_INNOBASE_STORAGE_ENGINE=1
- -DWITH_ARCHIVE_STORAGE_ENGINE=1
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1
(3) 用 make 命令生成二进制文件进行安装, 过程稍微有点长, 需等待一段时间.
- make
- make install
(4) 创建运行用户, 并对数据库目录进行权限设置.
- useradd -s /sbin/nologin MySQL
- chown -R MySQL.MySQL /usr/local/MySQL
3. 安装后的其他调整
(1) 建立配置文件
在 MySQL 的源码目录中的 support-files 文件夹下, 提供了适合不同负载数据库的样本配置文件. 一般选择 my-medium.conf 文件即可.
cp support-files/my-medium.cnf /etc/my.cnf
(2) 初始化数据库
为了正常使用 MySQL 数据库系统, 应以运行用户 MySQL 的身份执行初始化脚本 mysql_install_db, 指定数据存放目录等.
- /usr/local/MySQL/scripts/mysql_install_db \
- --user=MySQL \ // 运行用户 MySQL
- --ldata=/var/lib/MySQL \ // 函数库存放目录
- --basedir=/usr/local/MySQL \ // 数据库安装目录
- --datadir=/home/MySQL // 数据库存放目录
(3) 设置环境变量
为了方便在任何目录下使用 MySQL 命令, 需要在 / etc/profile 设置环境变量.
- echo "PATH=$PATH:/usr/local/mysql/bin/">> /etc/profile
- . /etc/profile // 立即生效
4. 添加系统服务
如果希望添加 mysqld 系统服务, 以便通过 chkconfig 进行管理, 可以直接使用源码包中提供的服务脚本.
(1) 找到 support-files 文件夹下的 MySQL.server 脚本文件, 将其复制到 / etc/init.d 目录下, 改名为 mysqld.
cp support-files/MySQL.server /etc/init.d/mysqld
(2) 设置执行权限, 通过执行 chkconfig 命令将其添加为 mysqld 系统服务.
- chmod +x /etc/init.d/mysqld // 设置执行权限
- chkconfig --add mysqld // 添加 mysqld 服务
- chkconfig --level 35 mysqld on
(3) 使用 service 工具启动 mysqld 服务, 并查看其运行状态.
[root@RedHat6-1 ~]# service mysqld start
Starting MySQL.. [确定]
- [root@RedHat6-1 ~]# netstat -antp | grep mysqld
- tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2586/mysqld
• 访问 MySQL 数据库
1. 登录到 MySQL 服务器
经过安装后的初始化过程, MySQL 数据库的默认管理员用户名为 "root", 密码为空. 若要以未设置密码的 root 用户登录本机的 MySQL 数据库, 可以执行以下命令:
[root@RedHat6-1 ~]# MySQL -u root //"-u" 选项用于指定认证用户
Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 3
- Server version: 5.5.24-log Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
owners.
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- MySQL>
有密码的情况下, 还应使用 "-p" 选项来进行密码校验.
- [root@RedHat6-1 ~]# MySQL -u root -p
- Enter password: // 根据提示输入正确的密码
2. 执行 MySQL 操作语句
验证成功以后将进入提示符为 "mysql>" 的数据库操作环境, 用户可以输入各种操作语句对数据库进行管理. 每一条 MySQL 操作语句以分号 ";" 结束, 输入时可以不区分大小写, 但习惯上将 MySQL 语句中的关键部分大写.
(1) 查看当前服务器中有哪些库
- MySQL> SHOW DATABASES;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | #mysql50#.gnome2 |
- | #mysql50#.mozilla |
- | bbs |
- | MySQL |
- | performance_schema |
- | test |
- +--------------------+
- 7 rows in set (0.01 sec)
(2) 查看当前使用的库中有那些表
先使用 USE 语句切换到所使用的库, 再用 SHOW TABLES 语句用于查看当前所在的库中包含的表.
- MySQL> USE MySQL;
- Database changed
- MySQL> SHOW TABLES;
- +---------------------------+
- | Tables_in_mysql |
- +---------------------------+
- | columns_priv |
- | db |
- | event |
- | func |
- | general_log |
- | help_category |
- | help_keyword |
- | help_relation |
- | help_topic |
- | host |
- | ndb_binlog_index |
- | plugin |
- | proc |
- | procs_priv |
- | proxies_priv |
- | servers |
- | slow_log |
- | tables_priv |
- | time_zone |
- | time_zone_leap_second |
- | time_zone_name |
- | time_zone_transition |
- | time_zone_transition_type |
- | user |
- +---------------------------+
- 24 rows in set (0.01 sec)
3. 退出 "mysql>" 操作环境
在 "mysql>" 环境中, 执行 "exit" 或 "quit" 命令可以退出, 返回到原来的 Shell 环境.
MySQL> exit
Bye
案例新版本 (MySQL-5.7.17.tar.gz)
环境 CentOS7 系统
官方站点为 https://dev.mysql.com/
•MySQL 的编译安装
1. 准备工作如上, 新老版本一样.
2. 源码编译安装
新版本 5.7 需要 Boost 这个库, 所以需要下载安装, 这里下载 1_59_0 版本, 注意这个版本和 MySQL 的版本是相对应的.
官方下载网站: http://sourceforge.net/projects/boost/files/boost/
(1) 将下载的 MySQL 源码包解压到 / opt 目录下, boost 源码包解压到 / usr/local / 目录下.
- tar zxvf MySQL-5.5.24.tar.gz -C /opt/
- tar zxvf boost_1_59_0.tar.gz -C /usr/local/
- mv /usr/local/boost_1_59_0 boost #重命名解压后的 boost 库
(2) 切换到展开的源码目录 MySQL-MySQL-5.7.17, 进行配置, cmake 编译.
- cmake \
- -DCMAKE_INSTALL_PREFIX=/usr/local/MySQL \
- -DMYSQL_UNIX_ADDR=/usr/local/MySQL/MySQL.sock \
- -DSYSCONFDIR=/etc \
- -DSYSTEMD_PID_DIR=/usr/local/MySQL \
- -DDEFAULT_CHARSET=utf8 \
- -DDEFAULT_COLLATION=utf8_general_ci \
- -DWITH_INNOBASE_STORAGE_ENGINE=1 \
- -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
- -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
- -DMYSQL_DATADIR=/usr/local/MySQL/data \
- -DWITH_BOOST=/usr/local/boost \
- -DWITH_SYSTEMD=1
上述的配置命令中, 各选项的含义如下:
•-DCMAKE_INSTALL_PREFIX: 指定将 MySQL 数据库程序安装到某目录下, 如目录 / usr/local/MySQL.
•-DDEFAULT_CHARSET: 指定默认使用的字符集编码, 如 utf8.
•-DDEFAULT_COLLATION: 指定默认使用的字符集校对规则, utf8_general_ci 是适用于 UTF-8 字符集的通用规则.
•-DSYSCONFDIR: 指定初始化参数文件目录.
•-DMYSQL_DATADIR: 指定数据库存放的路径.
•-DMYSQL_UNIX_ADDR: 指定数据库连接文件存放的路径.
•-DWITH_INNOBASE_STORAGE_ENGINE=1 : 指定四种存储引擎.
- -DWITH_ARCHIVE_STORAGE_ENGINE=1
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1
- -DWITH_PERFSCHEMA_STORAGE_ENGINE=1
-DWITH_BOOST: 指定 Boostk 库的位置, 5.7 版本必须添加这个参数.
(3) 用 make 命令生成二进制文件进行安装, 过程稍微有点长, 需等待一段时间.
- make
- make install
(4) 创建运行用户, 并对数据库目录进行权限设置.
- useradd -s /sbin/nologin MySQL
- chown -R MySQL.MySQL /usr/local/MySQL
3. 安装后的其他调整
(1) 编辑数据库配置文件 /etc/my.cnf
- VIM /etc/my.cnf #按以下内容进行修改
- [client]
- port = 3306 #定义端口号 3306
- default-character-set=utf8 #定义默认的字符集是 utf8
- socket = /usr/local/MySQL/MySQL.sock #定义 socket 的文件位置
- [MySQL]
- port = 3306 #定义端口号 3306
- default-character-set=utf8 #定义默认的字符集是 utf8
- socket = /usr/local/MySQL/MySQL.sock #定义 socket 的文件位置
- [mysqld]
- user = MySQL #定义用户
- basedir = /usr/local/MySQL #定义数据库对的位置
- datadir = /usr/local/MySQL/data #定义数据存放的位置
- port = 3306 #定义端口号
- character_set_server=utf8 #定义字符集是 utf8
- pid-file = /usr/local/MySQL/mysqld.pid #定义 pid 文件存放的位置
- socket = /usr/local/MySQL/MySQL.sock #定义 socket 的文件位置
- server-id = 1
- sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
- chown MySQL:MySQL /etc/my.cnf #设置配置文件的属性
(2) 初始化数据库
为了正常使用 MySQL 数据库系统, 应以运行用户 MySQL 的身份执行初始化脚本 mysqld, 指定数据存放目录等.
- cd /usr/local/MySQL/
- bin/mysqld \
- --initialize-insecure \
- --user=MySQL \ #运行用户 MySQL
- --basedir=/usr/local/MySQL \ #数据库安装目录
- --datadir=/usr/local/MySQL/data #数据存放目录
(3) 设置环境变量
为了方便在任何目录下使用 MySQL 命令, 需要在 / etc/profile 设置环境变量.
- echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH'>> /etc/profile
- echo 'export PATH'>> /etc/profile
- source /etc/profile // 立即生效
4. 添加系统服务
如果希望添加 mysqld 系统服务, 以便通过 systemctl 命令进行管理, 可以直接使用源码包中提供的服务脚本.
(1) 找到 MySQL 文件夹下的 mysqld.service 脚本文件, 将其复制到 / usr/lib/systemd/system 目录下.
- cp /usr/local/MySQL/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
- systemctl daemon-reload
(3) 使用 systemctl 启动 mysqld 服务, 并查看其运行状态.
- [root@localhost ~]# systemctl start mysqld.service
- [root@localhost ~]# netstat -anpt | grep 3306
- tcp6 0 0 :::3306 :::* LISTEN 6662/mysqld
• 访问 MySQL 数据库
1. 登录到 MySQL 服务器
经过安装后的初始化过程, MySQL 数据库的默认管理员用户名为 "root", 密码为空.
可以使用 mysqladmin 命令设置 MySQL 的密码.
- [root@localhost ~]# mysqladmin -u root -p password "123abc"
- Enter password: #输入 MySQL 的原始密码为空
- mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
- [root@localhost ~]# MySQL -u root -p #输入该命令, 进入数据库
- Enter password: #输入设置的密码 123abc
- ............ #省略内容
- MySQL>
2. 执行 MySQL 操作语句
(1) 查看当前服务器中有哪些库
- MySQL> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | MySQL |
- | performance_schema |
- | sys |
- | test |
- +--------------------+
- 5 rows in set (0.00 sec)
(2) 查看当前使用的库中有那些表
先使用 USE 语句切换到所使用的库, 再用 MySQL> TABLES 语句用于查看当前所在的库中包含的表.
- MySQL> use MySQL; #切换到 MySQL 库
- Database changed
- MySQL> show tables;
- +---------------------------+
- | Tables_in_mysql |
- +---------------------------+
- | columns_priv |
- | db |
- | engine_cost |
- | event |
- | func |
- | general_log |
- | gtid_executed |
- | help_category |
- | help_keyword |
- | help_relation |
- | help_topic |
- | innodb_index_stats |
- | innodb_table_stats |
- | ndb_binlog_index |
- | plugin |
- | proc |
- | procs_priv |
- | proxies_priv |
- | 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 |
- +---------------------------+
- 31 rows in set (0.01 sec)
来源: http://www.linuxidc.com/Linux/2018-11/155539.htm