安装MySQL
1.下载解压源代码包。
我的是mysql 5.1.48版本的。
2.添加mysql用户和组
[root@tigertall mysql-5.1.48]#groupadd mysql
[root@tigertall mysql-5.1.48]#useradd -g mysql mysq
3.编译安装
[root@tigertall mysql-5.1.48]# ./configure --enable-assembler \
--with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static \
--with-charset=utf8 --with-collation=utf8_general_ci \
--with-extra-charsets=complex --enable-local-infile --disable-shared \
--with-plugins=all --with-mysqld-user=mysql --with-pthread \
--enable-thread-safe-client
然后,编译安装
[root@tigertall mysql-5.1.48]make && make install
编译配置指令的意思是,
--enable-assembler
# 启用寄存器模式
--with-client-ldflags=-all-static
#为客户端编译静态程序
--with-mysqld-ldflags=-all-static
#为服务器端编译静态程序
--with-charset=utf8
#数据库编码使用utf8,默认的是latin1,可以设置的是
#binary armscii8 ascii big5 cp1250 cp1251 cp1256 cp1257
#cp850 cp852 cp866 cp932 dec8 eucjpms euckr gb2312 gbk geostd8
#greek hebrew hp8 keybcs2 koi8r koi8u
#latin1 latin2 latin5 latin7 macce macroman
#sjis swe7 tis620 ucs2 ujis utf8
--with-collation =
#数据库校验规则,--with-carset要和withc-collation一起使用才有效。
#要想更改字符集和校对规则,要同时使用--with-charset和--with-collation选项。
#校对规则必须是字符集的合法校对规则。参见下面的链接
--with-extra-charsets=complex
#增加对复杂编码的支持(可选,none, complex, all)
--with-plugins=all
#安装所有插件,默认不安装,可以使用一系列逗号分隔符来描述要安装的内容。
#可用的配置为 none max max-no-ndb all
#可用的插件为 partition daemon_example
#ftexample archive blackhole csv example federated
#heap ibmdb2i innobase innodb_plugin myisam myisammrg
#ndbcluster.
--with-mysqld-user=mysql
#指定mysql守护进程的启动用户
--disable-shared
# 禁用共享库
--with-pthread
#强制使用pthread库
--enable-thread-safe-client
#如果客户端使用多线程,那么应该使用此选项以编译线程安全的客户端
还有一些编译指令是,
--prefix=/usr/local/mysql # 不说了
--with-tcp-port=3306
#mysqld守护进程使用的端口,默认就是3306
--with-unix-socket-path=/tmp/mysql.sock
#unix套接字库路径,默认是/tmp/mysql.sock
--with-debug 和 --with-debug=full
#生成调试代码和库 witout-debug关闭调试
关于字符集和编码参见:
msql 5.1参考手册,第10章:字符集支持
4.一些问题
a).执行编译配置的时候报错
/bin/rm: cannot remove `libtoolt‘: No such file or directory
网上搜寻后,解决问题。具体方法是:
在执行./configure 之前,先执行:
# autoreconf –force –install
# libtoolize –automake –force
# automake –force –add-missing
# ./configure –prefix=/usr/local/mysql/ –datadir=/var/lib/mysql
这次,不再出错了,问题解决。(好像只要执行完第一命令后,在./configure 就不会报错了。)
5.Mysql安装后的设置
在Unix上安装MySQL后,需要初始化授权表、启动服务器,并确保服务器工作正常。
你还要让服务器随系统的启动和停止自动启动和停止。应当为授权表中的账户指定密码。
1.切换到mysql的安装后路径,这里是
cd /usr/local
2.初始化授权表
运行mysql_install_db程序设置含有确定如何让用户连接服务器的权限的初始MySQL授权表。
如果你使用的分发版类型不能运行程序,你需要执行该步骤。
典型,只有首次安装MySQL时,才需要运行mysql_install_db,
因此如果你升级已有的安装你可以跳过该步骤,
但mysql_install_db不会覆盖已有的授权表,因此可以在任何环境下安全运行。
要想初始化授权表,使用下面的一个命令:
shell> bin/mysql_install_db --user=mysql
mysql_install_db脚本创建数据目录、拥有所有数据库权限的mysql数据库
和可以用来测试MySQL的test数据库。脚本为root账户和匿名用户账户创建授权表条目。
账户一开始没有密码。简单说,这些权限允许MySQL root用户执行任何操作,
允许任何人使用test名创建或使用数据库或用test_启动。
一定要确保由mysql登录账户拥有数据库目录和文件,以便在以后运行时 服务器具有读、写访问权限。
为此,如果你用root用户运行mysql_install_db,应当使用--user选项。
否则,当以mysql登录时,应当执行脚本,你可以省略命令中的--user选项。
mysql_install_db在mysql数据库中创建几个表,包括user、db、host、
tables_priv、columns_priv和func以及其它。
3.启动mysql服务器
[root@tigertall local]# bin/mysqld_safe --user=mysql &
[1] 27463
[root@tigertall local]# 100719 02:59:05 mysqld_safe Logging to '/usr/local/var/tigertall.local.com.err'.
100719 02:59:05 mysqld_safe Starting mysqld daemon with databases from /usr/local/var
一定要让MySQL服务器使用非权限(non-root)登录账户运行。
为此,如果你以系统root运行mysql_safe,应当使用--user选项。
否则,你应当用mysql登录到系统来执行脚本,这样可以省略命令中的--user选项。
4.使用mysqladmin验证服务器在运行中。
以下命令提供了简单的测试,可检查服务器是否已经启动并能响应连接:
[root@tigertall local]# bin/mysqladmin version
[root@tigertall local]# bin/mysqladmin variablesy
验证关闭和重启服务器:
[root@tigertall local]# bin/mysqladmin -u root shutdown
[root@tigertall local]# bin/mysqld_safe --user=mysql --log &
5.安装自动启动守护
[root@tigertall local]# cp /usr/local/share/mysql/mysql.server /etc/init.d/mysql
[root@tigertall local]# chmod +x /etc/init.d/mysql
使用chkconfig设置守护进程的启动:
[root@tigertall local]#chkconfig --level 345 mysql on
在FreeBSD中,启动脚本通常应当位于/usr/local/etc/rc.d/。
手册的rc(8)页内说明只有该目录脚本的基本名匹配*.sh shell文件名模式,脚本才会执行。
目录内的其它文件或目录将被忽略掉。换句话说,在FreeBSD中,应当将mysql.server
脚本安装为 /usr/local/etc/rc.d/mysql.server.sh以便自动启动。
前面设置的另一种情况是,一些操作系统启动时也使用/etc/rc.local或
/etc/init.d/boot.local来启动其它服务。要想使用该方法启动MySQL
,你可以在相应启动文件后面追加一条命令:/bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'
来安装启动脚本。
6.安装配置文件
[root@tigertall local]# cp /usr/local/share/mysql/my-small.cnf /etc/my.cnf
目录/usr/local/share/mysql下有不同的配置文件,我用的是small,
其他还有medium,huge等等,可以根据自己的情况来处理。
下面的表显示了服务器和每个启动脚本从选项文件读取哪个选项组:
脚本
选项组
mysqld
[mysqld],[server],[mysqld-major-version]
mysql.server
[mysqld],[mysql.server],[server]
mysqld_safe
[mysqld],[server],[mysqld_safe]
[mysqld-major-version]意味着名为[mysqld-5.0]的组,
[mysqld-5.1]用于版本为5.0.x、5.1.x等的服务器。
该特性可以用来指定只被给定发布系列的服务器读取的选项。
为了向后兼容,mysql.server还读取[mysql_server]组,
mysqld_safe还读取[safe_mysqld]组。
然而,当使用MySQL 5.1时,你应当更新选项文件,使用[mysql.server]和[mysqld_safe]组。
7.其他
到了这里,mysql应该是可用的了,之后就是设置密码之类的了。
其他一些常见问题,请参考mysql安装手册中
这篇文章也是按照手册的指导来写的,感觉官方的文档真的很不错。
8.修改root用户密码
[root@tigertall local]# mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');
用服务器主机名替换第二个SET PASSWORD语句中的host_name。这是你指定匿名账户密码的主机名。
要想使用mysqladmin为root账户指定密码,执行下面的命令:
[root@tigertall local]# mysqladmin -u root password "newpwd"
[root@tigertall local]# mysqladmin -u root -h host_name password "newpwd"
上述命令适用于Windows和Unix。用服务器主机名替换第二个命令中的host_name。
不一定需要将密码用双引号引起来,但是你如果密码中包含空格或专用于命令解释的其它字符,
则需要用双引号引起来。
你还可以使用UPDATE直接修改user表。
下面的UPDATE语句可以同时为两个root账户指定密码:
[root@tigertall local]# mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')-> WHERE User = 'root'
mysql> FLUSH PRIVILEGES;
设置完密码后,当你连接服务器时你必须提供相应密码。
例如,如果你想要用mysqladmin关闭服务器,可以使用下面的命令:
[root@tigertall local]# mysqladmin -u root -p shutdown
Enter password: (enter root password here)