Mysql 下载安装及链接错误处理

Mysql 安装最方便的是用rpm包, 官方网站有下载。

地址为 http://dev.mysql.com/downloads/mysql/5.5.html#downloads

对开发人员来说, 需要下载的包有几个:

Mysql-server 服务端

Mysql-client 客户端,通过 mysql -uroot -p 可以进入到服务器端查看数据库(看远程主机用 mysql -uroot -p -h192.168.2.33)

Mysql-devel 开发需要的头文件,动态库静态库等。 开发的程序需要链接 libmysqlclient.a 这个静态库

如果你在编译链接的时候碰到下面的错误提示:

/usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.a when searching for -lmysqlclient
/usr/bin/ld: skipping incompatible /usr/lib/libmysqlclient.so when searching for -lmysqlclient
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld

那么原因就是 64位 32位 造成的不兼容

可能你是在 64位的系统下面安装了32位的mysql。 你需要安装64位的mysql。

并且设置你的Makefile文件的链接路径为 /usr/lib64/mysql

如果再碰到下面的错误:

/usr/bin/ld: /usr/lib/mysql/libmysqlclient.a(crypto_wrapper.cpp.o)(.data.rel.ro._ZTVN8TaoCrypt9Mode_BASEE[vtable for TaoCrypt::Mode_BASE]+0x14): unresolvable R_386_32 relocation against symbol `__cxa_pure_virtual@@CXXABI_1.3'
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: ld 返回

那么你很不幸, 这个是Mysql 的BUG, 我下载了 MySQL-devel-5.5.9-1.rhel5.i386.rpm 这个版本的安装包,

安装后总是提示上面的错误, 找了很多资料都没有解决。

最后差点拿源码包准备安装了, 后来做最后一次尝试, 安装了上一个版本

MySQL-devel-community-5.1.55-1.rhel5.i386.rpm 后就正常了。。。。。

Mysql 方面的链接错误可能还有其他的, 在编写Makefile文件的时候, 不但要 链接 libmysqlclient.a 文件, 还要链接

libcrypto.a 这个文件, 否则还有很多的链接错误等着你,如下所示:

LDFLAGS = -lstdc++ -lpthread -lmysqlclient -lcrypto

Mysql API 的封装其实很简单。

常用的 API 就那么几个。。。。

如果大家有需要, 可以联系我。。。。

下来再介绍一下 让远程主机可以访问mysql, 因为mysql默认安装后是只能本机访问, 要修改了远程主机可以访问,只需要执行

下面的授权语句即可。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '111111' WITH GRANT OPTION;

上面这句话中的 root 代表用户, *.* 代表权限, 111111 代表密码

执行后在系统数据库 mysql 中的 user 表里多了一行记录, 如下所示:

你也可以直接用insert 语句给 user表插入一条记录, 效果一样。

你可能感兴趣的:(mysql)