[分享]Linux下编译安装MySQL步骤和问题解决_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1988 | 回复: 0   主题: [分享]Linux下编译安装MySQL步骤和问题解决        下一篇 
gang
注册用户
等级:上等兵
经验:142
发帖:79
精华:0
注册:2011-12-30
状态:离线
发送短消息息给gang 加好友    发送短消息息给gang 发消息
发表于: IP:您无权察看 2014-12-1 14:16:59 | [全部帖] [楼主帖] 楼主

编译安装MySQL的步骤:

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> bin/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql var
shell> bin/mysqld_safe --user=mysql &


将mysql的执行路径添加到root用户的环境变量中:

shell> vi ~/.bash_profile


修改PATH变量:

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin/


让修改马上生效,可以执行如下命令:source ~/.bash_profile(或者. ~/.bash_profile)

问题解决:
(1)checking for termcap functions library... configure: error: No curses/termcap library found
解决方法: ./configure --with-named-curses-libs=/usr/lib/libncursesw.so.5 (但似乎编译时还是会报错?这时可以用apt-get install libncurses5-dev或yum -y install ncurses-devel)

(2)    ../depcomp: line 571: exec: g++: not found
make[1]: *** [my_new.o] 错误 127

make[1]: Leaving directory `/home/justme/software/mysql-5.1.30/mysys'


make: *** [all-recursive] 错误 1
这个问题原因是缺少g++编译器,解决方法是安装gcc-c++-4.1.2-33.i386.rpm套件。在安装过程中可能其还需要依赖套件libstdc++-devel-3.4.6-3.1.i386.rpm。所以解决途径为:
先安装libstdc++-devel-3.4.6-3.1.i386.rpm,再安装gcc-c++-4.1.2-33.i386.rpm

(3)     error: redeclaration of C++ built-in type
出现该问题的原因是重新安装gcc-c++后没有重新执行.configure命令。因此解决途径为:
重新执行 ./configure –prefix=/usr/local/mysql,再执行make

(4)    启动MySQL时报错:

[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist


   这个错误的原因是用mysql用户去启动,但是查看下var/mysql 下plugin表的所有者是root,故没有权限去执行。执行chown -R mysql var可以解决问题。
(5)    用SQL语句查询某些表时报错:ERROR 1273 (HY000): Unknown collation 'gbk_chinese_ci' in table 'data_plus' definition,运行set names gbk 或 SET character_set_client = gbk 时提示:ERROR 1115 (42000): Unknown character set: 'gbk'

原因在于配置和编译时没有指定GBK字符符(默认安装时没有),用下面这二个命令来重新编译:

./configure --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --with-extra-charsets=all --with-charset=gbk --with-collation=gbk_chinese_ci --with-big-tables --enable-thread-safe-client --enable-profiling --enable-community-features --enable-local-infile --with-fast-mutexes
make WITH_CHARSET=gbk WITH_XCHARSET=all WITH_COLLATION=gbk_chinese_ci WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes SKIP_DNS_CHECK=yes install clean
======================================


ubuntu下编译安装MYSQL(其实如果对性能和某些参数无特殊配置,可以直接下载二进制的发布版,更易安装,详见本文最后)

操作系统:ubuntu8.04  MySql版本:5.0.22
需要安装的编译器:
1:遇到 checking for C compiler default output file name... configure: error: C compiler cannot create executables

See `config.log' for more details.


这个问题 是因为没有安装G++造成的,#sudo apt-get install g++
利用这个命令可以下载并安装

如果在下载过程中出现   无法下载 http://cn.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_2.6.24-21.42_i386.deb 404 Not Found 
可以访问这里地址下载安装 libc-dev_2.6.24
之后再次执行 #sudo apt-get install g++ 就OK啦
地址:http://hi.baidu.com/robin_l/blog/item /3087ffa1875a2d83471064bf.html
2:在编译Mysql时

./configure --prefix=DIR


,如果出现了以下错误:

......
checking for tgetent in -ltermcap... no
checking for termcap functions library... configure: error: No curses/termcap library found


说明 curses/termcap 库没有安装

apt-cache search curses | grep lib


安装 libncurses5-dev ,然后重新运行配置

apt-get install libncurses5-dev


需要安装的编译器

sudo apt-get install g++
sudo apt-cache search curses | grep lib
sudo apt-get install libncurses5-dev


编译及配置步骤
1.sudo groupadd mysql

#添加 mysql 用户组
2.sudo useradd -g mysql mysql
#添加 mysql 用户
3.sudo gunzip < /home/flying/SoftWare/mysql-5.0.22.tar.gz | tar -xvf -
#解压缩源文件
4.sudo ./configure --prefix=/usr/local/mysql(这里只是简单的编译,如果需要更多的功能请在终端输入:sudo ./configure --help)
5.sudo make
#make
6.sudo make install
#make install
7.sudo cp support-files/my-medium.cnf /etc/my.cnf
#将 mysql 配置文件复制到系统的配置文件夹中
8.cd /usr/local/mysql/
#进入 MySql 安装后的目录
9.sudo bin/mysql_install_db --user=mysql
#数据库初始化
10.sudo chown -R root .
#给root用户赋予可读权限
11.sudo chown -R mysql var
#使/usr/local/mysql/var/目录下所有文件为用户mysql所有
12.sudo chgrp -R mysql .
#使/usr/local/mysql/目录下所有文件为用户组mysql所有
13.sudo bin/mysqld_safe --user=mysql &
#启动 MySql
14.sudo netstat -tap | grep mysql
#从服务启动 MySql 查看服务状态
15.sudo apt-get install mysql-admin
#安装 MySql 管理软件
16.sudo /etc/init.d/mysql start
#启动 MySql


17.设置自动启动
1、sudo ln -s /usr/local/share/mysql/mysql.server /etc/init.d/mysql
2、sudo chmod +x mysql
3、sudo sysv-rc-conf
(运行服务管理工具,没有sysv-rc-conf的可以马上安装一个,sudo apt-get install sysv-rc-conf,关于sysc-rc-conf的使用可以参考<Ubuntu7.04下使用sysv-rc-conf管理服务>)

18.创建连接(添加执行程序的软链接,这只是为了方便,喜欢用完整路径的可以不做)

ln -s /usr/local/bin/mysql /usr/bin/
ln -s /usr/local/bin/mysqlmanager /usr/bin/
ln -s /usr/local/bin/mysqld_safe /usr/bin/
ln -s /usr/local/bin/mysql_config /usr/bin/
ln -s /usr/local/share/mysql/mysql.server /usr/bin/
==============================


安装2进制版本的mysql

二进制版本的mysql是已经编译好的,无需 configure ,make  make install 等安装步骤,只需下载后解压再配置一 下即可使用,卸载也方便,直接删除即可;
    现在以mysql-5.1.47-linux-i686-glibc23.tar.gz 版本做介绍 :
1. # chmod 755  mysql-5.1.47-linux-i686-glibc23.tar.gz    //改变该文件为可执行权限
2. # tar -xvzf  mysql-5.1.47-linux-i686-glibc23.tar.gz     //将解压后生成的目录,复制到/usr/local/下并改名为mysql
3. # groupadd mysql    // 建立mysql组

 # useradd mysql -g mysql     //建立mysql用户并且加入到mysql组中
# cd /usr/local
# ln -s  mysql-5.1.47-linux-i686-glibc23 mysql
4. # cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf


     在 support-files目录下有4个模版文件,我们选择其中一个座位Mysql的配置文件,覆盖/etc/my.cnf(系统默认的配置,其中设置了性能参数和Mysql的一些路径参数)
5. # cd /usr/local/mysql // 进入mysql目录

 # ./scripts/mysql_install_db --user=mysql     //初试化表并且规定用mysql用户来访问。初始化表以后就开始给mysql和root用户设定访问权限
6. # chown -R mysql data       //设定mysql用户能访问/usr/local/mysql/data ,里面存的是mysql的数据库文件.这个目录是在/etc/my.cnf中有配置,mysql_install_db时产生。
7. # chown -R mysql data/.     //设定mysql用户能访问/usr/local/mysql/data/mysql下的所有文件
8. # chgrp -R mysql .    //设定mysql组能够访问/usr/local/mysql
9. # /usr/local/mysql/bin/mysqld_safe --user=mysql &
10.# cd /usr/local/mysql/bin  //进入 bin目录
11.# mysql  //运行mysq命令


如果没有没有启动 或出现 Can't connect to local MySQL server through socket '/tmp/mysql.sock'
解决方法: #cd /usr/local/mysql/support-files //进入该目录

#./mysql.server start  //启动即可 既可在生成 /tmp/mysql.sock


如果 /tmp/mysql.sock 无该文件存在,且mysql是处于 开启的状态 ?
解决方法: #netstat -an | grep 3306   //查看 3306端口

#ps -ef | grep mysql  // 查找 mysql 进程
# kill -9  进程号    //强制删除mysql的进程号
#./mysql.server start   //启动即可 既可在生成 /tmp/mysql.sock


如果在任意路径下如数mysql命令得到的无该命令咋办呢?
解决方法:修改 /etc/profile 文件   在文件中加入 

PATH=$PATH:/usr/local/mysql/bin/
export PATH  (保存即可退出执行 source /etc/profile)


以上操作完既可以 在任意目录执行# mysql 命令

如果想执行 service mysql start or restart stop 命令咋办的? 在不能老#./mysql.server start
解决方法: 将 mysql.server  复制一份到 /etc/rc.d/init.d 下并改名 mysql 或建个连接文件
假设当前目录为 /etc/rc.d/init.d
如: #cp  /usr/local/mysql/support-files/mysql.server  mysql (复制)
或 : #ln -s /usr/local/mysql/support-files/mysql.server  mysql (建立连接文件)
完成以上操作即可  执行 service mysql start (or restart stop)
用如下命令修改MYSQL密码

# /usr/local/mysql/bin/mysqladmin -u root password yourpassword     //默认安装密码为空,为了安全你必须马上修改
# chmod 700 /etc/init.d/mysql
# chkconfig --add mysql
# chkconfig --level 345 mysql on     //copy编译目录的一个脚本设置使mysql每次启动都能自动运行
# service mysql start
# netstat -atln
//启动mysql服务
//查看3306端口是否打开。要注意在防火墙中开放该端口。


可以用telnet  localhost  3306来测试一下,如果有反映,那就表明安装成功了

远程访问

local : grant all on *.* to 'root'@'192.168.0.1' identified by 'dukeping';
remote : mysql -h192.168.0.99 -uroot -pdukeping


--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论