Linux 7如何安装Mysql 5.7
这篇文章主要为大家展示了“Linux 7如何安装Mysql 5.7”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux 7如何安装Mysql 5.7”这篇文章吧。
在Oracle Linux 7.1中安装MySql 5.7 。mysql安装位置:/mysqlsoft/mysql,数据库文件数据位置:/mysqldata/mysql。
1.首先下载安装介质
mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
2. 在根目录下创建文件夹mysqlsoft和数据库数据文件/mysqldata/mysql
[root@cs2/]#mkdir-p/mysqlsoft[root@cs2/]#mkdir-p/mysqldata/mysql[root@cs2/]#ls-lrt/mysqldata/total0drwxr-xr-x2rootroot6May3111:58mysql
3.上传介质mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz到/mysqlsoft目录中并解压
[root@cs2/]#cdmysqlsoft[root@cs2mysqlsoft]#ls-lrttotal628704-rw-r--r--1rootroot643790848Apr202018mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz[root@cs2mysqlsoft]#tar-zxvfmysql-5.7.22-linux-glibc2.12-x86_64.tar.gz[root@cs2mysqlsoft]#ls-lrttotal628704-rw-r--r--1rootroot643790848Apr202018mysql-5.7.22-linux-glibc2.12-x86_64.tar.gzdrwxr-xr-x9rootroot120May3112:11mysql-5.7.22-linux-glibc2.12-x86_64
建议一般不要修改默认文件名,通过软连接来完成
[root@cs2mysqlsoft]#mvmysql-5.7.22-linux-glibc2.12-x86_64mysql[root@cs2mysqlsoft]#ls-lrttotal628704-rw-r--r--1rootroot643790848Apr202018mysql-5.7.22-linux-glibc2.12-x86_64.tar.gzdrwxr-xr-x9rootroot120May3113:28mysql-5.7.22-linux-glibc2.12-x86_64lrwxrwxrwx1rootroot35May3113:33mysql->mysql-5.7.22-linux-glibc2.12-x86_64[root@cs2mysqlsoft]#cdmysql[root@cs2mysql]#lsbinCOPYINGdocsincludelibmanREADMEsharesupport-files
4. 创建mysql用户与用户组
[root@cs2mysql]#groupaddmysql[root@cs2mysql]#useradd-r-gmysql-s/bin/falsemysql
因为用户只用于所有权目的,而不是登录目的,useradd命令使用-r与-s /bin/false选项来创建一个用户没有登录服务器主机的权限。
5.修改/mysqlsoft/mysql与/mysqldata/mysql目录权限
[root@cs2/]#chown-Rmysql:mysql/mysqlsoft/mysql[root@cs2/]#chown-Rmysql:mysql/mysqldata/mysql[root@cs2/]#chmod-R775/mysqlsoft/mysql[root@cs2/]#chmod-R775/mysqldata/mysql
6. MySQL对于libaio库有依赖性。台果这个libaio库没有安装那么数据目录初始化与后续的数据库服务启动将会失败,安装libaio库执行以下操作:
查询是否安装了libaio库
[root@cs2local]#yumsearchlibaioLoadedplugins:langpacksRepodataisover2weeksold.Installyum-cron?Orrun:yummakecachefast===========================================================================================================N/Smatched:libaio============================================================================================================libaio.i686:Linux-nativeasynchronousI/Oaccesslibrarylibaio.x86_64:Linux-nativeasynchronousI/Oaccesslibrarylibaio-devel.i686:DevelopmentfilesforLinux-nativeasynchronousI/Oaccesslibaio-devel.x86_64:DevelopmentfilesforLinux-nativeasynchronousI/OaccessNameandsummarymatchesonly,use"searchall"foreverything.
如果没有安装,可以执行下面的命令来安装
[root@cs2local]#yuminstalllibaioLoadedplugins:langpacksRepodataisover2weeksold.Installyum-cron?Orrun:yummakecachefastfile:///run/media/jy/OL-7.1%20Server.x86_64/repodata/repomd.xml:[Errno14]curl#37-"Couldn'topenfile/run/media/jy/OL-7.1%20Server.x86_64/repodata/repomd.xml"Tryingothermirror.Packagelibaio-0.3.109-12.el7.x86_64alreadyinstalledandlatestversionNothingtodo
7.配置mysql参数
只是设置几个简单的mysql运行参数
[root@cs2~]#vi/mysqlsoft/mysql/my.cnf[mysqld]basedir=/mysqlsoft/mysqldatadir=/mysqldata/mysqlbind-address=0.0.0.0user=mysqlport=3306log-error=/mysqldata/mysql/mysql.errpid-file=/mysqldata/mysql/mysqld.pidsocket=/mysqldata/mysql/mysql.sockcharacter-set-server=utf8default-storage-engine=INNODBexplicit_defaults_for_timestamp=true"/mysqlsoft/mysql/my.cnf"[New]67L,1642Cwritten
注意:log-error 一定要配置,因为如果mysql启动错误,可以从日志文件中找到错误原因。其次bind—address配置0.0.0.0是为了监听所有的连接。还有就是socket参数所指定的mysql.sock文件的路径最好设置为/tmp/mysql.sock,因为unix socket文件的缺省位置在/tmp目录中。
8.初始化mysql
[root@cs2/]#cd/mysqlsoft/mysql/bin[root@cs2bin]#./mysqld--user=mysql--defaults-file=/mysqlsoft/mysql/my.cnf--basedir=/mysqlsoft/mysql--datadir=/mysqldata/mysql--initialize[root@cs2mysql]#catmysql.err2019-05-31T06:01:50.260643Z0[Warning]'NO_ZERO_DATE','NO_ZERO_IN_DATE'and'ERROR_FOR_DIVISION_BY_ZERO'sqlmodesshouldbeusedwithstrictmode.Theywillbemergedwithstrictmodeinafuturerelease.2019-05-31T06:01:50.260731Z0[Warning]'NO_AUTO_CREATE_USER'sqlmodewasnotset.1001002019-05-31T06:01:53.795162Z0[Warning]InnoDB:Newlogfilescreated,LSN=457902019-05-31T06:01:54.049268Z0[Warning]InnoDB:Creatingforeignkeyconstraintsystemtables.2019-05-31T06:01:54.102171Z0[ERROR]unknownvariable'defaults-file=/mysqlsoft/mysql/my.cnf'2019-05-31T06:01:54.102193Z0[ERROR]Aborting
网上有人说是文件权限的问题,然后重新授权chmod 664 my.cnf 但并没有解决,有人建议调整一下参数顺序就好!!!最后调整了一下参数顺序果然有效:
[root@cs2bin]#./mysqld--defaults-file=/mysqlsoft/mysql/my.cnf--initialize--basedir=/mysqlsoft/mysql--datadir=/mysqldata/mysql--user=mysql[root@cs2mysql]#catmysql.err2019-05-31T06:05:06.362925Z0[Warning]'NO_ZERO_DATE','NO_ZERO_IN_DATE'and'ERROR_FOR_DIVISION_BY_ZERO'sqlmodesshouldbeusedwithstrictmode.Theywillbemergedwithstrictmodeinafuturerelease.2019-05-31T06:05:06.362994Z0[Warning]'NO_AUTO_CREATE_USER'sqlmodewasnotset.1001002019-05-31T06:05:09.779913Z0[Warning]InnoDB:Newlogfilescreated,LSN=457902019-05-31T06:05:10.026707Z0[Warning]InnoDB:Creatingforeignkeyconstraintsystemtables.2019-05-31T06:05:10.094462Z0[Warning]NoexistingUUIDhasbeenfound,soweassumethatthisisthefirsttimethatthisserverhasbeenstarted.GeneratinganewUUID:0be6983a-836a-11e9-a341-005056a092af.2019-05-31T06:05:10.109209Z0[Warning]Gtidtableisnotreadytobeused.Table'mysql.gtid_executed'cannotbeopened.2019-05-31T06:05:10.110107Z1[Note]Atemporarypasswordisgeneratedforroot@localhost:,;pm93qnL%-j2019-05-31T06:05:14.966324Z1[Warning]'user'entry'root@localhost'ignoredin--skip-name-resolvemode.2019-05-31T06:05:14.966373Z1[Warning]'user'entry'mysql.session@localhost'ignoredin--skip-name-resolvemode.2019-05-31T06:05:14.966391Z1[Warning]'user'entry'mysql.sys@localhost'ignoredin--skip-name-resolvemode.2019-05-31T06:05:14.966419Z1[Warning]'db'entry'performance_schemamysql.session@localhost'ignoredin--skip-name-resolvemode.2019-05-31T06:05:14.966428Z1[Warning]'db'entry'sysmysql.sys@localhost'ignoredin--skip-name-resolvemode.2019-05-31T06:05:14.966441Z1[Warning]'proxies_priv'entry'@root@localhost'ignoredin--skip-name-resolvemode.2019-05-31T06:05:14.966493Z1[Warning]'tables_priv'entry'usermysql.session@localhost'ignoredin--skip-name-resolvemode.2019-05-31T06:05:14.966508Z1[Warning]'tables_priv'entry'sys_configmysql.sys@localhost'ignoredin--skip-name-resolvemode.
其中[Note] A temporary password is generated for root@localhost: ,;pm93qnL%-j的root@localhost: 后面跟的是mysql数据库登录的临时密码,各人安装生成的临时密码不一样。可以看到到日志文件没有报错,而且有了临时密码,表示初始化成功。
9. 如果想服务能够部署自动支持安全连接,使用mysql_ssl_rsa_setup工具来创建缺省SSL与RSA文件
[root@cs2bin]#./mysql_ssl_rsa_setup--datadir=/mysqldata/mysqlGeneratinga2048bitRSAprivatekey......................................................................+++..............................................................+++writingnewprivatekeyto'ca-key.pem'-----Generatinga2048bitRSAprivatekey.............+++..............+++writingnewprivatekeyto'server-key.pem'-----Generatinga2048bitRSAprivatekey.....................................+++................................................+++writingnewprivatekeyto'client-key.pem'-----
9.启动mysql服务
[root@cs2/]#sh/mysqlsoft/mysql/support-files/mysql.serverstart/mysqlsoft/mysql/support-files/mysql.server:line239:my_print_defaults:commandnotfound/mysqlsoft/mysql/support-files/mysql.server:line259:cd:/usr/local/mysql:NosuchfileordirectoryStartingMySQLERROR!Couldn'tfindMySQLserver(/usr/local/mysql/bin/mysqld_safe)
启动mysql服务命令会报错,因为没有修改mysql的配置文件
修改Mysql配置文件,修改前为以下内容
iftest-z"$basedir"thenbasedir=/usr/local/mysqlbindir=/usr/local/mysql/biniftest-z"$datadir"thendatadir=/usr/local/mysql/datafisbindir=/usr/local/mysql/binlibexecdir=/usr/local/mysql/binelsebindir="$basedir/bin"iftest-z"$datadir"thendatadir="$basedir/data"fisbindir="$basedir/sbin"libexecdir="$basedir/libexec"fi
修改后的内容如下
[root@cs2~]#vi/mysqlsoft/mysql/support-files/mysql.serveriftest-z"$basedir"thenbasedir=/mysqlsoft/mysqlbindir=/mysqlsoft/mysql/biniftest-z"$datadir"thendatadir=/mysqldata/mysqlfisbindir=/mysqlsoft/mysql/binlibexecdir=/mysqlsoft/mysql/binelsebindir="$basedir/bin"iftest-z"$datadir"thendatadir="$basedir/data"fisbindir="$basedir/sbin"libexecdir="$basedir/libexec"fi[root@cs2~]#cp/mysqlsoft/mysql/support-files/mysql.server/etc/init.d/mysqld[root@cs2~]#chmod755/etc/init.d/mysqld
10.启动mysql
[root@cs2~]#servicemysqldstartStartingMySQL..SUCCESS!
11.配置环境变量
[root@cs2~]#vi/etc/profile#/etc/profile#Systemwideenvironmentandstartupprograms,forloginsetup#Functionsandaliasesgoin/etc/bashrc#It'sNOTagoodideatochangethisfileunlessyouknowwhatyou#aredoing.It'smuchbettertocreateacustom.shshellscriptin#/etc/profile.d/tomakecustomchangestoyourenvironment,asthis#willpreventtheneedformerginginfutureupdates.exportMYSQL_HOME=/mysqlsoft/mysql/exportPATH=$PATH:$MYSQL_HOME/bin
11.登录Mysql
初始化成功后,查看初始化密码
[root@cs2~]#cat/mysqldata/mysql/mysql.err|greppassword2019-05-31T06:05:10.110107Z1[Note]Atemporarypasswordisgeneratedforroot@localhost:,;pm93qnL%-j
并输入刚刚复制的密码,但是 却提示不能通过mysql.sock文件实现连接
[root@cs2bin]#./mysqladmin-uroot-ppasswordEnterpassword:mysqladmin:connecttoserverat'localhost'failederror:'Can'tconnecttolocalMySQLserverthroughsocket'/mysqlsoft/mysql/mysql.sock'(2)'Checkthatmysqldisrunningandthatthesocket:'/mysqlsoft/mysql/mysql.sock'exists!
这里就奇怪了,因为在my.cnf文件中设置的socket文件路径为/mysqldata/mysql/mysql.sock,但mysql所使用的文件不是启动服务所生成的。
[root@cs2~]#cat/mysqlsoft/mysql/my.cnf[mysqld]basedir=/mysqlsoft/mysqldatadir=/mysqldata/mysqlbind-address=0.0.0.0user=mysqlport=3306log-error=/mysqldata/mysql/mysql.errpid-file=/mysqldata/mysql/mysqld.pidsocket=/mysqldata/mysql/mysql.sockcharacter-set-server=utf8default-storage-engine=INNODBexplicit_defaults_for_timestamp=true[root@cs2mysql]#ls-lrttotal286896-rw-r-----1mysqlmysql134217728May3114:05ib_logfile1-rw-r-----1mysqlmysql56May3114:05auto.cnfdrwxr-x---2mysqlmysql8192May3114:05performance_schemadrwxr-x---2mysqlmysql4096May3114:05mysqldrwxr-x---2mysqlmysql8192May3114:05sys-rw-------1mysqlmysql1679May3114:25ca-key.pem-rw-r--r--1mysqlmysql1107May3114:25ca.pem-rw-------1mysqlmysql1679May3114:25server-key.pem-rw-r--r--1mysqlmysql1107May3114:25server-cert.pem-rw-------1mysqlmysql1679May3114:25client-key.pem-rw-r--r--1mysqlmysql1107May3114:25client-cert.pem-rw-------1mysqlmysql1679May3114:25private_key.pem-rw-r--r--1mysqlmysql451May3114:25public_key.pem-rw-r-----1mysqlmysql291May3118:05ib_buffer_pool-rw-------1mysqlmysql6May3118:08mysql.sock.locksrwxrwxrwx1mysqlmysql0May3118:08mysql.sock-rw-r-----1mysqlmysql6May3118:08mysqld.pid-rw-r-----1mysqlmysql101396May3118:08mysql.err-rw-r-----1mysqlmysql12582912May3118:08ibtmp1-rw-r-----1mysqlmysql12582912May3118:08ibdata1-rw-r-----1mysqlmysql134217728May3118:08ib_logfile0
可以看到在/var/lib/mysql目录中的mysql.sock是指向/mysqlsoft/mysql/mysql.sock文件的。
[mysql@cs2~]$ls-lrt/var/lib/mysql总用量110604-rw-rw----.127275033164810月112017ib_logfile1drwx------.22727409610月112017performance_schemadrwx------.22727409610月112017mysql-rw-rw----.127275610月112017auto.cnf-rw-rw----.12727503316485月3018:32ib_logfile0-rw-rw----.12727125829125月3018:32ibdata1lrwxrwxrwx1rootroot275月3115:44mysql.sock->/mysqlsoft/mysql/mysql.sock
如果使用-S选项来指定生成的mysql.sock文件进行登录是可以成功登录的
[mysql@cs2mysql]$mysql-S/mysqldata/mysql/mysql.sock-uroot-pEnterpassword:WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis6Serverversion:5.7.22MySQLCommunityServer(GPL)Copyright(c)2000,2018,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>quit
修改socket文件路径为/mysqlsoft/mysql/mysql.sock
[root@cs2~]#cat/mysqlsoft/mysql/my.cnf[mysqld]basedir=/mysqlsoft/mysqldatadir=/mysqldata/mysqlbind-address=0.0.0.0user=mysqlport=3306log-error=/mysqldata/mysql/mysql.errpid-file=/mysqldata/mysql/mysqld.pidsocket=/mysqlsoft/mysql/mysql.sockcharacter-set-server=utf8default-storage-engine=INNODBexplicit_defaults_for_timestamp=true
再重启mysql服务
[root@cs2~]#servicemysqldstopShuttingdownMySQL..SUCCESS![root@cs2~]#servicemysqldstartStartingMySQL..SUCCESS![mysql@cs2~]$mysql-uroot-pEnterpassword:WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis4Serverversion:5.7.22MySQLCommunityServer(GPL)Copyright(c)2000,2018,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>
这就可以登录了。
12.重置root用户密码
[mysql@cs2~]$mysql-uroot-pEnterpassword:WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis2Serverversion:5.7.22Copyright(c)2000,2018,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>setpassword=password("123456");QueryOK,0rowsaffected,1warning(0.00sec)
13.设置允许远程登录mysql
如果要远程访问数据库,只需要把拥有全部权限的root账号对应的记录的Host字段改为%就可以了
mysql>usemysql;ReadingtableinformationforcompletionoftableandcolumnnamesYoucanturnoffthisfeaturetogetaquickerstartupwith-ADatabasechangedmysql>updateusersethost='%'whereuser='root';QueryOK,1rowaffected(0.00sec)Rowsmatched:1Changed:1Warnings:0mysql>flushprivileges;QueryOK,0rowsaffected(0.00sec)mysql>grantallprivilegeson*.*toroot@'%';QueryOK,0rowsaffected(0.00sec)mysql>flushprivileges;QueryOK,0rowsaffected(0.00sec)
测试远程登录
-bash-4.2$mysql-h10.11.13.19-P3306-uroot-pEnterpassword:WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis4Serverversion:5.7.22MySQLCommunityServer(GPL)Copyright(c)2000,2015,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>usemysql;ReadingtableinformationforcompletionoftableandcolumnnamesYoucanturnoffthisfeaturetogetaquickerstartupwith-ADatabasechangedmysql>SELECTDISTINCTCONCAT('User:[',user,'''@''',host,'];')ASUSER_HOSTFROMuser;+------------------------------------+|USER_HOST|+------------------------------------+|User:[root'@'%];||User:[mysql.session'@'localhost];||User:[mysql.sys'@'localhost];|+------------------------------------+3rowsinset(0.05sec)
以上是“Linux 7如何安装Mysql 5.7”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。