本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • MySQL
  • MySQL基础教程(1)MySQL 5.7介绍与安装教程

MySQL基础教程(1)MySQL 5.7介绍与安装教程

发布:TangLu2020-2-9 10:25分类: MySQL 标签: mysql

一、MySQL版本比较


mysql5.5
mysql5.6 mysql5.7
索引 全局读写锁,并发一般     全局读写锁,并发一般
锁优化,并发性能提升
数据一致性 半同步 半同步 无损复制
多线程复制 不支持 基于库的多线程复制 基于组提交的多线程复制
事务组提交 不支持 支持 支持
半结构化数据     BLOB BLOB JSON

二、MySQL常见安装方式

MySQL的安装根据下载的安装包不同可以分为RPM包安装、源码编译安装和通用二进制包安装3种方式。通过下载的安装包文件名也能判断出需要使用的安装方式:

· RPM包:mysql57-community-release-el7-9.noarch.rpm(也可以选择bundle包,该包将MySQL所有包都整合放在了一起)

· 二进制包(Generic):mysql-5.7.16-linux-glibc2.5-x86_64.tar

· 源码包安装(Source):mysql-5.7.16.tar.gz


三、yum安装(最简单,但无法自定义参数,不建议使用)

1、在官方选择Red Hat Enterprise Linux / Oracle Linux时可以看到一个Yum Repository的下载链接,进入该链接后会显示对应系统版本的rpm文件,这些rpm文件并不是MySQL的安装包,而是Yum仓库。下载对应版本的rpm文件并安装到系统中就会生成一个包含MySQL程序的Yum仓库,剩下的就是使用yum命令直接安装了(记得Server和Client都要装上

mysql571.png


2、安装完成后通过systemctl管理服务。第一次启动系统会初始化生成数据库的相关文件到/var/lib/mysql目录中

yum install mysql mysql-server
systemctl enable mysqld
systemctl start mysqld


3、登录数据库测试是否正常,MySQL 5.7开始无法使用空密码登录,临时密码存放在日志文件中

grep 'password' /var/log/mysqld.log
mysql -uroot -p 'kjgug512525'


四、进制预编译安装MySQL(推荐方式,也是最常用的方式,能通过配置文件来指定数据库参数

1、创建MySQL用户和组,并将通用二进制安装包解压到需要的路径下

useradd -r -s /sbin/nologin -M mysql
cd /usr/local/
tar zxvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz  #将二进制包解压到/usr/local目录下
ln -s mysql-5.7.16-linux-glibc2.5-x86_64  mysql  #创建软连接方便管理


2、创建用于存放MySQL数据和日志的目录,如有需要还可以为慢日志、错误日志都建立各自的目录。创建好目录后需要将目录属主修改为MySQL用户

mkdir /mysql/{data,log}
chown -R mysql.mysql /mysql


3、创建MySQL主配置文件(可以复制support-files/my-default.cnf文件作为模板)

#方法1:初始化的时候在命令行写好相关参数(不建议)
bin/mysqld --initialize --user=mysql  --basedir=/usr/local/mysql  --datadir=/mysql/data

#方法2:将初始化参数写在配置文件中,然后读取配置文件进行初始化(初始化失败的话通常和配置参数错误有关系)
vi /etc/my3306.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /mysql/data
log-error = /mysql/log/error.log
character-set-server = utf8
socket = /tmp/mysql.sock
[client]  #客户端连接mysql时使用的配置信息
socket = /tmp/mysql.sock


4、初始化MySQL

MySQL 5.7开始使用bin/mysqld脚本进行初始化(5.7之前是bin/mysql_install_db)。初始化完成后在DATADIR下会创建MySQL的4个默认数据库和相关文件。要重新初始化的话需要先停止服务并删掉数据目录下的所有文件才可以。如果初始化失败可以查看错误日志检查原因,在没配置错误日志时,错误日志默认会在databasedir以主机名为名,如server1.err。如果发现启动后参数和配置的my.cnf存在差异,需要检查下是否在其它路径存在my.cnf覆盖了/etc/my.cnf的配置

#运行初始化命令指定配置文件路径,该选项必须放在第一个参数中,如果不写的话MySQL会按照几个默认路径按顺序寻找my.cnf这样命名的配置文件
mysqld --defaults-file=/etc/my3306.cnf  --initialize --user=mysql
#mysqld --defaults-file=/etc/my3306.cnf  --initialize-insecure --user=mysql  #初始化不创建初始密码


5、使用mysqld_safe脚本来启动服务,相比使用mysqld启动,它会多运行一个监控进程,当mysql服务异常退出时会自动拉起

/usr/local/mysql/bin/mysqld_safe  --defaults-file=/etc/my3306.cnf &  #指定配置文件启动服务


6、在错误日志中记录了一个root临时密码(5.6是空密码),使用该密码运行bin/mysql_secure_installation脚本可以进行一些安全相关配置,或者登陆到MySQL后修改root的密码,否则无法进行其他操作。

alter user root@'localhost' identified by 'Newp@ssword'

如初始化完成后使用临时密码提示Your password has expired密码过期,是因为系统自带的mysql命令行工具与当前安装的MySQL版本不一致,使用绝对路径即可。

mysql572.png


7、修改配置后有两种方式来重启MySQL。一个是通过客户端关闭MySQL然后再启动

#方法1:用命令行直接关闭再启动服务
mysqladmin -uroot -p123456 -S /tmp/mysql.sock shutdown
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
#方法2:拷贝二进制包中的启动脚本进行服务管理,虽然这操作方式是按照CentOS6来的,但是在7也是向下兼容的)
cp support-files/mysql-server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld
chkconfig --add mysqld 
chkconfig mysqld on
service mysqld start


五、源码安装MySQL(所有参数都能自定义)

1、安装编译工具和依赖环境,如cmake,这个是MySQL 5.6开始使用的编译工具

yum -y install ncurses ncurses-devel cmake gcc gcc-c++ openssl-devel bison cmake 


2、创建用户和组,和使用通用二进制安装一样,略


3、进入源码包目录,使用cmake进行编译,5.7版本开始需要有boost库的支持,具体参数可以在官方文档查询

cmake . \
-DDOWNLOAD_BOOST=1 或者 -DWITH_BOOST=/usr/local/boost
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/mysql_data \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all 


4、cmake操作完成后执行运行make && make install命令,然后就是漫长的等待,之后就是初始化过程,和使用通用二进制包安装一模一样,略


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《MySQL基础教程(1)MySQL 5.7介绍与安装教程
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-400.html  [生成短网址]

已有 0/3744 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~