您的位置:首页 > 运维架构 > Linux

Linux下编译安装MySQL步骤和问题解决

2010-12-13 17:54 826 查看
Linux下编译安装MySQL步骤和问题解决

编译安装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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐