当前位置: 首页 > Linux

CentOS上安装MySQL详解

时间:2023-04-07 03:02:58 Linux

介绍最近某云搞活动,买了一台服务器,用于日常学习测试。新机没什么,安装一些常用的软件在所难免,于是想着把安装过程详细记录下来,一是做个备忘,二是给有需要的同学做个参考。Linux安装软件的几种常见方式:源码编译压缩包解压(一般为tar.gz)编译安装包(RPM、DPKG等)在线安装(YUM、APT等)以上方法增加了便利性反过来,但是通用性依次降低,比如直接下载压缩包解压。这种方法一般需要自己做一些额外的配置工作,但是只要掌握了方法,基本上所有平台都适用。YUM虽然简单,但是平台有限,网络有限。如有必要,需要添加一些特定的YUM源。最好掌握几种安装方法。原则上使用简单的:YUM>RPM>tar.gz>sourcecode本文介绍MySQL在CentOS上的安装。主要步骤参考MySQL官方文档:https://dev.mysql.com/doc/refman/5.7/en/installing.html为了测试不同的安装方式,我折腾了几次,安装又删除,删除安装,亲测每一步都成功,每条命令都亲身执行过,放心使用吧闲话少说,回书吧(闲话会有一大堆。。。)1.YUM0,删除检查已安装的MySQLMariaDBshell>rpm-qa|grepmariadbmariadb-server-5.5.60-1.el7_5.x86_64mariadb-5.5.60-1.el7_5.x86_64mariadb-libs-5.5.60-1.el7_5.x86_64如果不存在则删除mariadb(以上检查结果返回空)然后跳转步骤后shell>rpm-e--nodepsmariadb-servershell>rpm-e--nodepsmariadbshel??l>rpm-e--nodepsmariadb-libs其实yum安装可以不用删除mariadb,安装MySQL会覆盖已有的mariadbcheckMySQLshell>rpm-qa|grepmysql如果不存在删除MySQL(上面的检查结果返回空)然后跳过这一步shell>rpm-e--nodepsxxx1,addMySQLYumRepositoryStarting从CentOS7开始,MariaDB成为Yum源中默认的数据库安装包。也就是说在CentOS7及以上系统使用yum安装MySQL会默认安装MariaDB(MySQL的一个分支)。如果要安装MySQL官方版本,需要使用MySQL提供的Yum源。MySQL源码官网下载地址:https://dev.mysql.com/downloads/repo/yum/查看系统版本:shell>cat/etc/redhat-releaseCentOSLinuxrelease7.6.1810(Core)选择对应版本下载,例如CentOS7目前查看官网最新的yum源下载地址:https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpmshell>wgethttps://dev.mysql。com/get/mysql80-community-release-el7-3.noarch.rpminstallMySQLsourceshell>sudorpm-Uvhplatform-and-version-specific-package-name.rpm如CentOS7当前最新MySQL源码安装:shell>sudorpm-Uvhmysql80-community-release-el7-3.noarch.rpm检查是否安装成功执行成功后会在/etc/yum.repos下生成两个repo文件mysql-community.repo和mysql-community.d/directory-source.repo可以通过yumrepolistshell查看mysql相关资源>yumrepolistenabled|grep"mysql.*-community.*"!mysql-connectors-community/x86_64MySQL连接器社区108!mysql-tools-community/x86_64MySQL工具社区90!mysql80-community/x86_64MySQL8.0社区服务器1132。选择MySQL版本.使用MySQLYumRepository安装MySQL。默认情况下,当前最对于新的稳定版,比如通过上面的MySQL源安装,默认安装会选择MySQL8.0版本。如果你只想安装这个版本,可以直接跳过这一步。如果没有,比如我这里要安装MySQL5.7版本,就需要“切换版本”:查看当前MySQLYumRepository中的所有MySQL版本(每个版本在不同的子仓库)shell>yumrepolistall|grepmysqlswitchversionshell>sudoyum-config-manager--disablemysql80-communityshell>sudoyum-config-manager--enablemysql57-community除了使用yum-config-manager,也可以直接编辑/etc/yum.repos.d/mysql-community.repofileenabled=0禁用[mysql80-community]name=MySQL8.0CommunityServerbaseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/enabled=0gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysqlenabled=1enable#启用MySQL5.7[mysql57-community]name=MySQL5.7CommunityServerbaseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql检查当前启用的MySQL存储库shell>yumrepolistenabled|grepmysql如果都开启了Multiplewarehouse,安装时会选择最新的版本。3.安装MySQLshell>sudoyuminstallmysql-community-server此命令将安装MySQL服务器(mysql-community-server)及其需要的依赖和相关组件,包括mysql-community-client、mysql-community-common、mysql-community-libs等。如果带宽不够,这一步会耗时较长,请耐心等待~4.启动MySQLStartshell>sudosystemctlstartmysqld.serviceCentOS6:shell>sudoservicemysqldstartviewstatusshell>sudosystemctlstatusmysqld.serviceCentOS6:shell>sudoservicemysqldstatusstopshell>sudosystemctlstopmysqld.serviceCentOS6:shell>sudoservicemysqldstoprestartshell>sudosystemctlrestartmysqld.serviceCentOS6:shell>sudoservicemysqldrestart5、修改密码初始密码MySQL在第一次启动后会创建一个超级管理员账号root@localhost,并且初始密码保存在日志文件中:shell>sudogrep'temporarypassword'/var/log/mysqld.log修改默认密码shell>mysql-uroot-pmysql>ALTERUSER'root'@'localhost'IDENTIFIEDBY'123456';ERROR1819(HY000):Yourpassworddoesnotsatisfythecurrentpolicyrequirements出现以上提示是因为密码太简单,解决方法如下:使用复杂的密码,MySQL默认的密码策略是包含数字、字母和特殊字符;如果只是为了测试,不想使用复杂密码,可以修改默认策略,即validate_password_policy(以及validate_password_length等相关参数),支持简单密码的设置。具体方法可以自行百度;修改配置文件/etc/my.cnf,添加validate_password=OFF,保存并重启MySQLmysql>ALTERUSER'root'@'localhost'IDENTIFIEDBY'123456';QueryOK,0rowsaffected(0.00sec)6。允许root远程访问mysql>GRANTALLPRIVILEGESON*.*TO'root'@'%'IDENTIFIEDBY'123456'WITHGRANTOPTION;mysql>FLUSH特权;7.设置编码为utf8查看编码mysql>SHOWVARIABLESLIKE'character%';设置代码编辑/etc/my.cnf,在[mysqld]节点添加如下代码:[mysqld]character_set_server=utf8init-connect='SETNAMESutf8'8.设置启动shell>systemctlenablemysqldshell>systemctldaemon-reload2.除了rpm的安装过程,其他步骤同yum安装,不再赘述0.略删旧版本1.下载mysql安装包下载地址:https://dev.mysql.com/downloads/mysql/选择对应版本:shell>wgethttps://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar2,安装MySQL并解压(unpack)shell>tar-xvfmysql-5.7.26-1.el7.x86_64.rpm-bundle.tar-xvfmysql-5.7.26-1.el7.x86_64.rpm-bundle.tarmysql-community-embedded-devel-5.7.26-1.el7.x86_64.rpmmysql-community-libs-5.7.26-1.el7.x86_64.rpmmysql-community-embedded-5.7.26-1.el7.x86_64.rpmmysql-community-test-5.7.26-1.el7.x86_64.rpmmysql-community-embedded-compat-5.7.26-1.el7.x86_64.rpmmysql-community-common-5.7.26-1.el7.x86_64.rpmmysql-community-devel-5.7.26-1.el7.x86_64.rpmmysql-community-client-5.7.26-1.el7.x86_64.rpmmysql-community-server-5.7.26-1.el7.x86_64.rpm我们主要安装这四个(如果需要也可以安装其他的):mysql-community-libs-5.7.26-1.el7.x86_64。rpmmysql-community-common-5.7.26-1.el7.x86_64.rpmmysql-community-client-5.7.26-1.el7.x86_64.rpmmysql-community-server-5.7.26-1.el7.x86_64.rpm如果如果不想下载rpm-bundle,官网也提供了单独的rpm下载链接。每个rpm包的安装都有依赖关系,所以需要按照一定的顺序安装。如果在安装过程中提示缺少依赖包,必须先安装相应的包:shell>rpm-ivhmysql-community-common-5.7.26-1.el7.x86_64.rpmshell>rpm-ivhmysql-community-libs-5.7.26-1.el7.x86_64.rpmshell>rpm-ivhmysql-community-client-5.7.26-1.el7.x86_64.rpmshell>rpm-ivhmysql-community-server-5.7.26-1.el7.x86_64.rpm还有一个简单的方法可以自动处理包之间的依赖关系,自动下载缺失的依赖:shell>yuminstallmysql-community-{server,client,common,libs}-*注意:上面的yuminstall命令需要在tar解压后的每个rpm包所在目录下执行,否则会以yum方式安装,需要mysql的yum源配置好,速度很慢。使当前机器支持外网访问3、稍微设置3、tar.gz0、删除旧版本1、下载下载地址:https://dev.mysql.com/downloa...选择对应版本:shell>wgethttps://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz2,安装&配置:依赖MySQL依赖libaio库,如果没有先安装:shell>yuminstalllibaio创建一个mysql用户不需要登录的系统账号,启动MySQL服务时会用到这个账号shell>groupaddmysqlshell>useradd-r-gmysql-s/bin/falsemysql解压并创建链接shell>cd/usr/localshell>tarzxvf/path/to/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gzshell>ln-smysql-5.7.26-linux-glibc2.12-x86_64/mysql创建mysql-files目录这一步不是必须的,可以设置secure_file_priv的值指向这个目录(用来限制数据导入导出操作的目录)shell>cdmysqlshell>mkdirmysql-filesshell>chownmysql:mysqlmysql-filesshell>chmod750mysql-filesinitializationshell>bin/mysqld--initialize--user=mysql如果初始化报错如下:errorwhileloadingsharedlibraries:libnuma.so。1:无法打开共享对象文件:没有这样的文件or目录是因为没有安装libnuma(或者默认安装的是32位的),我们这里需要64位的:shell>yuminstallnumactl.x86_64执行后,重新初始化,初始化成功。返回结果中有一行包含初始密码,首次登录时使用:Atemporarypasswordisgeneratedforroot@localhost:8M0ary878s*UEnableSSL(notrequired)shell>bin/mysql_ssl_rsa_setupstartshell>bin/mysqld_safe--user=mysql&查看进程查看对于一些默认参数,可以在配置文件中修改这些参数shell>ps-ef|grepmysqlroot1460412719000:03pts/000:00:00/bin/shbin/mysqld_safe--user=mysqlmysql1467414604000:03pts/000:00:00/usr/local/mysql/bin/mysqld--basedir=/usr/local/mysql--datadir=/usr/local/mysql/data--plugin-dir=/usr/local/mysql/lib/plugin--user=mysql--log-error=VM_2_24_centos.err--pid-file=VM_2_24_centos.pid设置环境变量,避免每次执行mysql命令时都添加路径,在/etc/profile中添加:exportPATH=$PATH:/usr/local/mysql/bin设置为服务shell>cpsupport-files/mysql.server/etc/init.d/mysqldshell>servicemysqldstart|stop|restart|status启动shell>chkconfig--addmysqldshell>chkconfig--listmysqldmysqld0:离开1:关闭2:开启3:开启4:开启5:开启6:关闭其他配置同yum和rpm,就不赘述了4.源码安装不用费心...结论我们不是Linux运维专家,我也不是MySQL专家。不知道生在这个时代是幸福还是不幸。在线上环境中,越来越少的人(主要是指平时写代码的人)手动安装配置这些数据库和中间件。为什么?羊毛布?因为各种云产品太方便了,一般公司不会缺钱的,方便又稳定,何乐而不为呢~不过我们自己做测试还是很有必要的,而且,还有还有很多公司的开发环境和测试环境还是偶尔需要手工完成。当然,也有那些自建机房的巨头。由于我们不是专家,所以上面写的内容难免有错误。是的,如果看到了希望大家及时批评指正~