mysql55源码安装配置.docx
- 文档编号:23340868
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:33
- 大小:360.99KB
mysql55源码安装配置.docx
《mysql55源码安装配置.docx》由会员分享,可在线阅读,更多相关《mysql55源码安装配置.docx(33页珍藏版)》请在冰豆网上搜索。
mysql55源码安装配置
1.mysql的安装
1.1版本5.5
使用sysbench工具测试,发现mysql5.5比5.1性能要高上很多,因此我们使用mysql5.5版本。
1.2安装方式
关于mysql的安装方式可以通过rpm包,二进制编译,yum安装,源码编译安装;在5.5之前的版本用的都是./configure的安装方式,而自MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具,因此,我们首先要在系统中源码编译安装cmake工具。
1.2.1Cmke安装
在安装前请确定gcc-c++编译器是否安装,如果没有,请通过yuminstallgcc-c++安装。
如果提示ThissystemisnotregisteredwithRHN,即yum没有注册,请参考附录1。
#wgethttp:
//www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz
#tarzxvfcmake-2.8.4.tar.gz
#cdcmake-2.8.4
#./configure
#make
#makeinstall
基本上安装会很顺利,安装
1.3安装前的系统设置
1.建立mysql安装目录及数据存放目录。
#mkdir/opt/mysql
#mkdir/opt/mysql/data
2.创建用户和用户组
#groupaddmysql
#useradd-gmysqlmysql
3.赋予数据存放目录权限
#chownmysql:
mysql–R/opt/mysql/data
1.4从configure更换为cmake
由于我们平时习惯了使用configure方式,并且所使用的参数也是比较个性化的,换成cmake之后,这一方面会带来不少的麻烦。
还好,MySQL的官方网站提供了二者的参数对照表,我们可以尽可能的保留之前的参数,来编译配置新的MySQL版本。
configure与cmake参数对照指南:
以我自己为例,之前我一直使用的参数为:
./configure--prefix=/opt/mysql/
--sysconfdir=/opt/mysql/etc
--localstatedir=/opt/mysql/data
--with-tcp-port=3306
--with-unix-socket-path=/tmp/mysqld.sock
--with-mysqld-user=mysql
--enable-assembler
--with-extra-charsets=all
--enable-thread-safe-client
--with-big-tables
--with-readline
--with-ssl
--with-embedded-server
--enable-local-infile
--with-plugins=partition,innobase,myisammrg
lower_case_table_names=1区分大小写,表出现大小写时添加
经过与cmake的参数对照之后,去除掉已经被取消的参数(大多数是因为新版本已经默认启用),cmake的参数配置如下:
cmake.\
-DCMAKE_BUILD_TYPE:
STRING=Release\
-DCMAKE_INSTALL_PREFIX:
PATH=/opt/mysql\
-DCOMMUNITY_BUILD:
BOOL=ON\
-DENABLED_PROFILING:
BOOL=ON\
-DENABLE_DEBUG_SYNC:
BOOL=OFF\
-DINSTALL_LAYOUT:
STRING=STANDALONE\
-DMYSQL_DATADIR:
PATH=/opt/mysql/data\
-DMYSQL_MAINTAINER_MODE:
BOOL=OFF\
-DWITH_EMBEDDED_SERVER:
BOOL=ON\
-DWITH_EXTRA_CHARSETS:
STRING=all\
-DWITH_SSL:
STRING=bundled\
-DWITH_UNIT_TESTS:
BOOL=OFF\
-DWITH_ZLIB:
STRING=bundled\
-LH
1.5安装编译mysql5.5最新版本
我这里编译安装的是MySQL5.5.13通过wget直接下载得到,如果连接失败,可以在
http:
//ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-5.1/下载各种版本。
安装模式可参考
#wget
#tarzxvfmysql-5.5.13.tar.gz
#cdmysql-5.5.13
mysql-5.5.13#
cmake.\
-DCMAKE_INSTALL_PREFIX=/opt/mysql\
-DSYSCONFDIR=/opt/mysql/etc\
-DMYSQL_DATADIR=/opt/mysql/data\
-DMYSQL_TCP_PORT=3306\
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock\
-DMYSQL_USER=mysql\
-DEXTRA_CHARSETS=all\
-DWITH_READLINE=1\
-DWITH_SSL=system\
-DWITH_EMBEDDED_SERVER=1\
-DENABLED_LOCAL_INFILE=1\
-DWITH_INNOBASE_STORAGE_ENGINE=1\
-DWITHOUT_PARTITION_STORAGE_ENGINE=1\
使用下面
cmake.\
-DCMAKE_BUILD_TYPE:
STRING=Release\
-DCMAKE_INSTALL_PREFIX:
PATH=/opt/mysql\
-DCOMMUNITY_BUILD:
BOOL=ON\
-DENABLED_PROFILING:
BOOL=ON\
-DENABLE_DEBUG_SYNC:
BOOL=OFF\
-DINSTALL_LAYOUT:
STRING=STANDALONE\
-DMYSQL_DATADIR:
PATH=/opt/mysql/data\
-DMYSQL_MAINTAINER_MODE:
BOOL=OFF\
-DWITH_EMBEDDED_SERVER:
BOOL=ON\
-DWITH_EXTRA_CHARSETS:
STRING=all\
-DWITH_SSL:
STRING=bundled\
-DWITH_UNIT_TESTS:
BOOL=OFF\
-DWITH_ZLIB:
STRING=bundled\
-LH
安装过程中会遇到如下问题
--CouldNOTfindCurses(missing:
CURSES_LIBRARYCURSES_INCLUDE_PATH)
CMakeErroratcmake/readline.cmake:
82(MESSAGE):
Curseslibrarynotfound. Pleaseinstallappropriatepackage,
removeCMakeCache.txtandreruncmake.OnDebian/Ubuntu,packagenameislibncurses5-dev,onRedhatandderivatesitisncurses-devel.
CallStack(mostrecentcallfirst):
cmake/readline.cmake:
126(FIND_CURSES)
cmake/readline.cmake:
216(MYSQL_USE_BUNDLED_LIBEDIT)
CMakeLists.txt:
250(MYSQL_CHECK_READLINE)
--Configuringincomplete,errorsoccurred!
mysql-5.5.13#rmCMakeCache.txt
#yuminstallncurses-devel
[root@localhostmysql-5.5.11]#yuminstallbison
[root@localhostmysql-5.5.11]#cmake
#make
#makeinstall
在make与makeinstall的时候可以看到进度百分比,感觉这一点要比configure方式要好。
1.6配置并初始化数据库
1.创建f配置文件
#mkdir/opt/mysql/log
#mkdir/opt/mysql/etc
#cpsupport-files/my-f/opt/mysql/etc/f
2.初始化数据库
执行前需赋给scripts/mysql_install_db文件执行权限
#chmod755scripts/mysql_install_db
#scripts/mysql_install_db--user=mysql--basedir=/opt/mysql/--datadir=/opt/mysql/data/
3.赋予shell脚本可执行权限:
#mkdir/opt/mysql/init.d
#cpsupport-files/mysql.server/opt/mysql/init.d/mysql
4.启动MySQL
#/opt/mysql/init.d/mysqlstart
5.通过命令行登录管理MySQL服务器(提示输入密码时直接回车):
#/opt/mysql/bin/mysql-uroot-p-S/tmp/mysql.sock
6.输入以下SQL语句,创建一个具有root权限的用户(admin)和密码(12345678):
GRANTALLPRIVILEGESON*.*TO´admin´@´localhost´IDENTIFIEDBY´12345678´;
GRANTALLPRIVILEGESON*.*TO´admin´@´127.0.0.1´IDENTIFIEDBY´12345678´;
7.为root帐户设置初始密码
#/opt/mysql/bin/mysqladmin-urootpassword´new-password´
8.删除本机匿名连接的空密码帐号
/opt/mysql/bin/mysql-uroot-p´new-password´
mysql>usemysql;//选择系统数据库mysql
mysql>selectHost,User,Passwordfromuser;//查看所有用户
mysql>deletefromuserwherepassword="";
mysql>flushprivileges;
mysql>selectHost,User,Passwordfromuser;//确认密码为空的用户是否已全部删除
mysql>exit;
以上文档参考
常见错误MySQLError#2002
Can'tconnecttolocalmysqlserver'/var/mysql/mysql.sock'
(2)
cd/var/lib/
sudomkdirmysql
cdmysql
ln-s/tmp/mysql.sock/var/lib/mysql/mysql.sock
如果还是不能成功证明mysql.sock没有生成
到/opt/mysql/init.d下mysqlstart就会生成mysql.sock
不能进行servicemysqlrestart的话,出现mysql:
unrecognizedservice需要将/opt/mysql/init.d/mysql复制到/etc/rc.d/init.d/则可以servicemysqlrestart了。
查看开机启动项chkconfig–list将mysql加入开机启动项chkconfig--addmysql。
打开mysql远程连接
打开MySQL远程访问权限
1.以root帐户登陆MySQL
MySQL-uroot-p123456
注:
123456为root用户的密码。
2.创建远程登陆用户并授权
grantallPRIVILEGESondiscuz.*toted@'123.123.123.123'identifiedby'123456';
注:
上面的语句表示将discuz数据库的所有权限授权给ted这个用户,允许ted用户在123.123.123.123这个IP进行远程登陆,并设置ted用户的密码为123456。
----------------
改表法
可能是你的帐号不允许从远程登陆,只能在localhost。
这个时候只要在localhost的那台电脑,登入mysql后,更改"mysql"数据库里的"user"表里的"host"项,从"localhost"改称"%"
mysql-uroot-p
mysql>usemysql;
mysql>updateusersethost='%'whereuser='root';
mysql>selecthost,userfromuser;
如果还不行,就关闭防火墙
1.7如果你忘记了MySQL密码,如何重置它呢?
下面是错误答案:
首先停止MySQL服务,然后使用skip-grant-tables参数启动它:
shell>/etc/init.d/mysqlstop
shell>mysqld_safe–skip-grant-tables&
此时无需授权就可以进入到MySQL命令行,使用SQL重置MySQL密码:
UPDATEmysql.userSETPassword=PASSWORD('…')WHEREUser='…'ANDHost='…';
FLUSHPRIVILEGES;
为什么说它是错误答案?
因为在单纯使用skip-grant-tables参数启动服务后,除非数据库服务器屏蔽了外网访问,否则除了自己,其它别有用心的人也可能访问数据库,尽管重置密码所需的时间很短,但俗话说不怕贼偷就怕贼惦记着,任何纰漏都可能酿成大祸。
下面是正确答案:
关键点是:
在使用skip-grant-tables参数的同时,还要加上skip-networking参数:
shell>mysqld_safe–skip-grant-tables–skip-networking&
接着使用SQL重置密码后,记得去掉skip-networking,以正常方式重启MySQL服务:
shell>/etc/init.d/mysqldrestart
上面的方法需要重启两次服务,实际上还能更优雅一点,重启一次即可:
首先需要把用到的SQL语句保存到一个文本文件里(/path/to/init/file):
UPDATEmysql.userSETPassword=PASSWORD('…')WHEREUser='…'ANDHost='…';
FLUSHPRIVILEGES;
接着使用init-file参数启动MySQL服务,
shell>/etc/init.d/mysqlstop
shell>mysqld_safe–init-file=/path/to/init/file&
此时,密码就已经重置了,最后别忘了删除文件内容,免得泄露密码。
提示:
本文用到的参数都是通过命令行mysqld_safe传递的,实际上也可以通过f.
2.mysql参数配置
[mysqld]
port=3306
socket=/tmp/mysql.sock
skip-external-locking
back_log=200
interactive_timeout=7200
table_cache=512
key_buffer_size=40M
max_connections=1024
#record_buffer=16M
thread_cache_size=80
wait_timeout=7200
max_allowed_packet=1M
table_open_cache=64
sort_buffer_size=512K
net_buffer_length=8K
read_buffer_size=256K
read_rnd_buffer_size=512K
myisam_sort_buffer_size=8M
3.linux下mysql技巧
1.在linux下显示所有的存储过程信息showprocedurestatus\G。
2.在shell下操纵存储过程。
mysql-uroot-p-e"showprocedurestatus\G">mysql.txt
3.showdatabases;
4.useoperator_3n;
5.showtables;
6.describeuser;
7.showprocesslist;
8.showengines;
9.showvariables;
10.showstatus;
11.showevents;
12.showprocedurestatus;
13.showfunctionstatus;
14.showevents;
15.showgrants;
16.showindexfromuser;
17.showinnodbstatus;
18.showerrors;
19.showprivileges;
20.showglobalstatus;
21.showmutexstatus;
4.将window下数据导入到linux
导出方式
mysqldump--default-character-set=utf8-uroot-p-ntd-Roperator_3n>d:
/operator_3n_backup_20120209.sql
mysqldump--default-character-set=utf8-uroot-p-ntd-Rsp_voipgateway>d:
/sp_voipgateway_backup_20120209.sql
-ntd是表示导出存储过程;-R是表示导出函数
如上便可将windows下的数据(包括存储过程和函数)到处到sql中。
然后通过cuteftp上载到linux下进行导入。
也可以重新执行脚本进行导入,将所有脚本放在linux下直接进行执行。
三种导入方式:
#mysqldump–uroot–poperator_3n…/operator_3n_backup_20120209.sql
mysql>sourceoperator_3n_backup_20120209.sql
mysql>\.operator_3n_backup_20120209.sql
5.Linux基准测试
sysbench--test=oltp--mysql-table-engine=innodb--oltp-table-size=100000--mysql-socket=/tmp/mysql.sock--mysql-db=sbtest--mysql-user=root--mysql-password=123456prepare
sysbench--num-threads=16--max-requests=100000--test=oltp--oltp-table-size=1000000--mysql-socket=/tmp/mysql.sock--mysql-db=sbtest--mysql-user=root--mysql-password=123456--oltp-read-onlyrun
6.Linux优化
6.1如何使用SQLProfiler性能分析器
mysql的sql性能分析器主要用途是显示sql执行的整个过程中各项资源的使用情况。
分析器可以更好的展示出不良SQL的性能问题所在。
下面我们举例介绍一下MySQLSQLProfiler的使用方法:
∙首先,开启MySQLSQLProfiler
mysql>SELECT@@profiling;
+-------------+
|@@profiling|
+-------------+
|0|
+-------------+
1rowinset(0.00sec)
mysql>SETprofiling=1;
QueryOK,0rowsaffected(0.00sec)
mysql>SELECT@@profiling;
+-------------+
|@@profiling|
+-------------+
|1|
+-------------+
1rowinset(0.00sec)
默认情况下profiling的值为0表示MySQLSQLProfiler处于OFF状态,开启SQL性能分析器后profiling的值为1.
通过sql性能分析器,我们来对比一下下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mysql55 源码 安装 配置