一、MySQL的安装方式
1、二进制软件包安装
第一种是yum安装或者rpm安装
第二种是glibc版本的安装
2、源码包编译安装
通用的Linux下都可以编译安装
二、区分数据库与数据库实例
1、什么是MySQL数据库?
数据库(database): 操作系统或存储上的数据文件的集合。mysql数据库中,数据库文件可以是*.frm、.MYD、.MYI、*.ibd等结尾的文件, 不同存储引擎文件类型不同。
2、什么是MySQL数据库实例?
数据库实例(instance): 由后台进程或者线程以及一个共享内存区组成。共享内存可以被运行的后台线程所共享。 数据库实例才是真正操作数据库的。
注意:MySQL的后台守护程序mysqld是单进程多线程的工作模式。
3、什么是MySQL数据库服务器?
数据库服务器(database server):部署安装数据库实例的服务器。
4、数据库和数据库实例之间的关系是什么?
通常情况下,数据库实例和数据库是一一对应的关系,也就是一个数据库实例对应一个数据库; 但是,在集群环境中存在多个数据库实例共同使用一个数据库。oracle RAC
三、安装MySQL的glibc版本
软件版本的下载地址
https://www.mysql.com/
这里下载的glibc版本为mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
安装需求 | 配置 |
---|---|
安装目录 | /mysql_3306 |
数据目录 | /mysql_3306/data/ |
端口号 | 3306 |
第一步,解压安装包
tar -xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
第二步,把mysql解压后的压缩包(GBLIC版本)移动到/根目录下,然后更名mysql_3306
# mv mysql-5.7.31-linux-glibc2.12-x86_64 /mysql_3306
第三步,建议创建一个数据库专用账号mysql
# useradd -r -s /sbin/nologin mysql
第四步,清空系统中的原有mariadb的配置文件(/etc/my.cnf)
/etc/my.cnf文件是操作系统为mariadb软件预留的配置的文件,之所以一定要删除这个文件,主要原因在于数据库在初始化时,首先在自己的安装目录下寻找有没有my.cnf配置文件,如果有,会自动根据里面的配置信息进行初始化。如果找不到,则到/etc目录下寻找my.cnf文件,但是由于/etc目录下的my.cnf文件是mariadb的,如果按照mariadb的配置,会导致初始化失败。
# rm -rf /etc/my.cnf
第五步,切换到mysql工作目录/mysql_3306,创建一个mysql-files目录并更改权限
mysql-files:主要用于数据文件的导入与导出(备份与还原),MySQL的备份会产生一个文件xxx.sql或xxx.txt。mysql-files就是导入与导出时,所指定的默认目录。目前mysql-files没有什么用,但是你必须要创建,因为GLIBC属于二进制软件包,其很多配置已经默认了,包括mysql-files文件夹,如果没有这个文件夹可能导致mysql无法启动。
# cd /mysql_3306# mkdir mysql-files# chown mysql:mysql mysql-files# chmod 750 mysql-files
第六步,初始化数据库
可以实现数据库的初始化(产生data目录),而且会产生一个随机密码,这个密码要记住
# bin/mysqld --initialize --user=mysql --basedir=/mysql_3306选项说明:--initialize 初始化--user=mysql 以mysql用户的身份初始化数据库,产生文件都是mysql作为拥有者--basedir=xxx mysql安装目录初始化密码位置 password is generated for root@localhost: (cn_jS+*n2wh
数据库的安装容易出错的地方就是初始化,主要看安装目录下有没有生成一个data目录来判断初始化是否成功。
第七步,设置安全加密连接(SSL),数据传输会采用加密形式,适合敏感数据
# bin/mysql_ssl_rsa_setup --datadir=/mysql_3306/data
第八步,启动MySQL数据库服务
# cp support-files/mysql.server /etc/init.d/mysql_3306
默认情况下,glibc版本的数据库要求安装到/usr/local/mysql目录,其mysql.server脚本中对应的目录也是/usr/local/mysql,这会导致mysql无法启动。所以可以更改其basedir以及datadir两个变量
# vim /etc/init.d/mysql_330646行 basedir=/mysql_330647行 datadir=/mysql_3306/data
启动服务
# service mysql_3306 start
当MySQL启动成功后,其日志会自动写入到data数据目录中的主机名称.err文件中,涉及MySQL无法启动、启动报错,其详细的原因99%在.err文件中可以找到问题!
第九步,把mysql客户端命令添加到环境变量,以便以后可以随时访问
# echo 'export PATH=$PATH:/mysql_3306/bin' >> /etc/profile# source /etc/profile
设置完成后,我们可以在任意位置调用mysql客户端命令
# mysql -uroot -p
第十步,MySQL GLIBC版本后续配置
1更改管理员root账号的密码
[root@localhost mysql_3306]# bin/mysqladmin -uroot password '123' -pEnter password:输入刚刚初始化产生的临时密码
还可以进入mysql中修改密码
[root@localhost mysql_3306]# mysql -uroot -p
mysql> set password='123';重置完成后,建议刷新权限,让其立即生效mysql> flush privielges;
2 定义MySQL的配置文件my.cnf(非常重要)
# vim /mysql_3306/my.cnf[mysqld]basedir=/mysql_3306datadir=/mysql_3306/datasocket=/tmp/mysql.sockvalidate_password=OFF选项说明:[mysqld] 代表针对服务器端进行配置basedir 代表数据库的安装目录datadir 代表数据目录,以后专门用于存放数据文件的(核心目录)socket 代表套接字文件,专门为客户端与服务器端连接提供一个桥梁validate_password 关闭MySQL密码强度检测# service mysql_3306 restart
3 安全配置
# mysql_secure_installation都选择y就行主要是是否启动密码脚尖器、是否设置root密码、是否允许root远程连接、是否移除测试数据库等等一系列功能。
四、MySQL的源码编译安装
基本步骤:配置—>编译—>安装
安装需求 | 配置 |
---|---|
安装目录 | /mysql_3307 |
数据目录 | /mysql_3307/data |
端口号 | 3307 |
socket文件 | $basedir/mysql.sock |
字符集 | utf8mb4 |
第一步:安装MySQL编译需要用到的依赖库 |
# yum -y install ncurses-devel cmake libaio-devel openssl-devel
第二步:上传软件到服务器端并解压
# tar -xf mysql-boost-5.7.31.tar.gz
第三步:配置(基于cmake进行配置)
# cd mysql-5.7.31# vim myconfig.shcmake . \-DCMAKE_INSTALL_PREFIX=/mysql_3307 \-DMYSQL_DATADIR=/mysql_3307/data \-DMYSQL_TCP_PORT=3307 \-DMYSQL_UNIX_ADDR=/mysql_3307/mysql.sock \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_PARTITION_STORAGE_ENGINE=1 \-DWITH_FEDERATED_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DWITH_MYISAM_STORAGE_ENGINE=1 \-DENABLED_LOCAL_INFILE=1 \-DEXTRA_CHARSETS=all \-DDEFAULT_CHARSET=utf8mb4 \-DDEFAULT_COLLATION=utf8mb4_general_ci \-DWITH_SSL=system \-DWITH_BOOST=boost# chmod +x myconfig.sh# ./myconfig.sh选项说明:-DCMAKE_INSTALL_PREFIX :安装路径-DMYSQL_DATADIR :数据目录-DMYSQL_TCP_PORT :端口号-DMYSQL_UNIX_ADDR :套接字文件位置
- 常用配置选项
配置选项 | 描述 | 默认值 | 建议值 |
---|---|---|---|
CMAKE_INSTALL_PREFIX | 安装基目录(basedir) | /usr/local/mysql | 根据需求 |
MYSQL_DATADIR | 数据目录(datadir) | $basedir/data | 根据需求 |
SYSCONFDIR | 默认配置文件my.cnf路径 | /etc | |
MYSQL_TCP_PORT | TCP/IP端口 | 3306 | 非默认端口 |
MYSQL_UNIX_ADDR | 套接字socket文件路径 | /tmp/mysql.sock | $basedir/ |
DEFAULT_CHARSET | 默认字符集 | latin1 | utf8mb4 |
DEFAULT_COLLATION | 默认校验规则 | latin1_swedish_ci | utf8mb4_general_ci |
WITH_EXTRA_CHARSETS | 扩展字符集 | all | all |
ENABLED_LOCAL_INFILE | 是否启用本地加载外部数据文件功能 | OFF | 建议开启 |
WITH_SSL SSL | 支持类型 | system | 建议显式指定 |
WITH_BOOST | Boost库源代码的位置 | Boost库是构建MySQL所必需的,建议事先下载 |
第四步:编译安装
# make -j2 && make install选项说明:-j2 :代表同时开启多个线程共同实现编译操作
建议还是使用make编译更加保险,而不是make -j2;
第五步:初始化数据库
1 创建mysql-files目录
# cd /mysql_3307# mkdir mysql-files# chown -R mysql:mysql /mysql_3307# chmod 750 mysql-files
2 数据库初始化操作
# bin/mysqld --initialize --user=mysql --basedir=/mysql_3307 --datadir=/mysql_3307/data...2020-08-24T11:07:37.621346Z 1 [Note] A temporary password is generated forroot@localhost: O6.iHqrZgzz7
3 拷贝mysql.server脚本到/etc/init.d目录,然后启动数据库
# cp support-files/mysql.server /etc/init.d/mysql_3307# service mysql_3307 start
若出现该异常
原因:mysql这个用户对/mysql_3307目录没有写入文件的权限,写入mysql_socket套接字文件。
办法:
# chown -R mysql.mysql /mysql_3307
第六步:MySQL源码编译安装后的后续配置
1 编写MySQL配置文件,my.cnf
# vim /mysql_3307/my.cnf[mysqld]basedir=/mysql_3307datadir=/mysql_3307/datasocket=/mysql_3307/mysql.sock# service mysql_3307 restart
2 设置管理员的密码
# bin/mysqladmin -uroot password '123' -pEnter password:O6.iHqrZgzz7
3 安全设置
# bin/mysql_secure_installation
4 添加mysql_3307到开机启动项
# chkconfig --add mysql_3307# chkconfig mysql_3307 on
拓展:如何访问不同的数据库
方式一:直接进入对应软件目录中的bin目录,运行客户端
# mysql -uroot -p可以通过server version查看当前mysql版本
方法二:通过编辑文件.bashrc来设置别名
vim ~/.bashrcalias mysql_3306="/mysql_3306/bin/mysql"alias mysql_3307="/mysql_3307/bin/mysql"注意:需要切换用户后才能生效
方法三:拷贝bin/mysql到/usr/bin目录下并重命名
cp /mysql_3306/bin/mysql /usr/bin/mysql_3306之后就可以在任意位置通过mysql_3306来启动该mysql;同样的mysql_3307的操作也一样