MySQL 源码编译安装
cd mysql-5.0.81 ./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql make make install
卸载 make uninstall
make clean仅仅是清除之前编译的可执行文件及配置文件。
而make distclean要清除所有生成的文件。
Makefile
在符合GNU Makefiel惯例的Makefile中,包含了一些基本的预先定义的操作:
make
根据Makefile编译源代码,连接,生成目标文件,可执行文件。
make clean
清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件。
make install
将编译成功的可执行文件安装到系统目录中,一般为/usr/local/bin目录。
make dist
产生发布软件包文件(即distribution package)。这个命令将会将可执行文件及相关文件打包成一个tar.gz压缩的文件用来作为发布软件的软件包。
它会在当前目录下生成一个名字类似“PACKAGE-VERSION.tar.gz”的文件。PACKAGE和VERSION,是我们在configure.in中定义的AM_INIT_AUTOMAKE(PACKAGE, VERSION)。
make distcheck
生成发布软件包并对其进行测试检查,以确定发布包的正确性。这个操作将自动把压缩包文件解开,然后执行configure命令,并且执行make,来确认编译不出现错误,最后提示你软件包已经准备好,可以发布了。
make distclean类似make clean,但同时也将configure生成的文件全部删除掉,包括Makefile。
安装后的MySQL配置
出问题的地方主要是在这里。出现问题的根源在于配置文件以及默认配置。由于是源代码安装且安装的位置不是默认位置,因此有一些选项必须制定才能使MySQL正常运行
注:配置下面参数 user 时 可以指定 特定linux操作系统用户 不一定非要root用户
1.进入安装后的目录执行 初始化数据库
/usr/local/mysql/bin/mysql_install_db --user=root --basedir=/usr/local/mysql --datadir=/var/lib/mysql --no-defaults
2.修改数据库文件权限
chown -R 系统用户:系统用户 /var/lib/mysql
五、设置开机自动启动MySQL服务
添加 mysqld 服务
MySQL已经提供了默认的脚本mysql.server(在[mysql源文件目录]/support-files/下)
cp -p mysql-5.0.81/support-files/mysql.server /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld
chkconfig --level 345 mysqld on
首 先应该知道:MySQL寻找配置文件的路径以及顺序。最开始检索的位置是/etc/my.cnf之后是/etc/mysql/my.cnf因此我们要做的 就是在这两个地方之一建立配置文件my.cnf。MySQL为我们准备了几种不同方案的默认配置文件(在/usr/mysql/support- files/中),因此我们可以复制一份到上述的位置
cp /home/mysql-5.0.81/support-files/my-large.cnf /etc/my.cnf
在my.cnf 中 [mysqld] 下面加入如下的内容: 传入适当的参数启动mysqld。
[mysqld]
# 备注: /etc/init.d/mysqld 中的 user 也要相应修改
user=系统用户
basedir=/usr/local/mysql
datadir=/var/lib/mysql
default-character-set=utf8
default-collation=utf8_bin
default-storage-engine=innodb
对应 修改 /etc/init.d/mysqld 中的 user=特点的系统用户更多关于my.cnf的配置限于篇幅就不再讲了,但为了日常的开发需要还应该继续配置的,这部分内容就参考google搜索以及MySQL Manual吧
Debian/Ubuntu上开机启动服务的管理不是使用chkconfig,而使用的是sysv-rc-conf,尝试执行
加入开机自启动: sudo update-rc.d mysql.server defaults
从开机自启动中移出: sudo update-rc.d -f mysql.server remove
若提示没有安装,则
之后运行即可,该工具采用的是图形界面,很直观在此就不介绍如何使用了,我们需要做的是找到【mysql】一栏,选定【3】【4】【5】这三列,这样就完成了开机自动启动MySQL daemon了。
MySQL数据库连接配置
注意,在Ubuntu下MySQL缺省是只允许本地访问的,如果你要其他机器也能够访问的话,那么需要改变/etc/mysql/my.cnf配置文件了!下面我们一步步地来:
默认的MySQL安装之后根用户是没有密码的,所以首先用根用户进入:
$mysql -u root
在这里之所以用-u root是因为我现在是一般用户(firehare),如果不加-u root的话,mysql会以为是firehare在登录。注意,我在这里没有进入根用户模式,因为没必要。一般来说,对mysql中的数据库进行操作, 根本没必要进入根用户模式,只有在设置时才有这种可能。
进入mysql之后,最要紧的就是要设置Mysql中的root用户密码了,否则,Mysql服务无安全可言了。
mysql> UPDATE user SET host='%' , PASSWORD=PASSWORD('123456') WHERE USER='root' and host='127.0.0.1';
或者
注意,我这儿用的是123456做为root用户的密码,但是该密码是不安全的,请大家最好使用大小写字母与数字混合的密码,且不少于8位。
如果你想进行远程访问或控制,那么你要做两件事:
其一:添加可远程访问数据库的管理员用户
1.关闭mysql
# service mysqld stop
2.屏蔽权限 无需密码启动 可 远程访问设置
# mysqld_safe --skip-grant-tables &
3.新开起一个终端输入
# mysql -uroot mysql
mysql> FLUSH PRIVILEGES;
-- 给用户授权 , 如user@host不存在 则新建用户 , identified by "123456" 可修改密码
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" WITH GRANT OPTION;
-- grant all privileges on *.* to soak@"%" identified by "123456" with grant option;
mysql> UPDATE user SET PASSWORD=PASSWORD('123456') WHERE USER='root' and host='%';
-- 记得要这句话,否则如果关闭先前的终端,又会出现原来的错误
mysql> FLUSH PRIVILEGES;
-- delete from user where USER='';
mysql> \q
第一行命令解释如下,*.*:第一个*代表数据库名;第二个*代表表名。这里的意思是所有数据库里的所有表都授权给用户。 root:授予root账号。“%”:表示授权的用户IP可以指定,这里代表任意的IP地址都能访问MySQL数据库。“password”:分配账号对 应的密码,这里密码自己替换成你的mysql root帐号密码。
其二:修改配置文件中的访问限制
$sudo gedit /etc/mysql/my.cnf
老的版本中
>skip-networking => # skip-networking
新的版本中
>bind-address=127.0.0.1 => bind-address= 你机器的IP
这样就可以允许其他机器访问MySQL了。
问题:
安装mysql,在./configure时出现错误:error: No curses/termcap library found的解决办法
mysql版本:5.1.30
已经不记得这次是第几次安装mysql了,遇到这个问题倒是第一次。
之前在tar,./configure,make,make install 经典四步时,从来没有想过其中的过程,只觉得像例行公事一样,做就是了。
不幸的是,这次在./configure后,make时出现以下错误:
make: *** No targets specified and no makefile found. stop.
于是,在网上找到相关资料,确认是./configure出了问题,于是回头查看,果然发现问题:
最后几行出了错。完整错误信息如下:
checking for tgetent in -lncurses... no
checking for tgetent in -lcurses... no
checking for tgetent in -ltermcap... no
checking for tgetent in -ltinfo... no
checking for termcap functions library... configure: error: No curses/termcap library found
原因:
缺少ncurses安装包
解决办法:
下载安装相应软件包
一、如果你的系统是RedHat系列:
yum list|grep ncurses
yum -y install ncurses-devel
yum install ncurses-devel
二、如果你的系统是Ubuntu或Debian:
apt-cache search ncurses
apt-get install libncurses5-dev
待安装completed!之后,再./configure,顺利通过,然后make && make install,成功安装,一切OK!~~~