1.说明:
安装MySQL主要有两种方法:一种是通过源码自行编译安装,这种适合高级用户定制MySQL的特性,这里不做说明;另一种是通过编译过的二进制文件进行安装。二进制文件安装的方法又分为两种:一种是不针对特定平台的通用安装方法,使用的二进制文件是后缀为.tar.gz的压缩文件;第二种是使用RPM或其他包进行安装,这种安装进程会自动完成系统的相关配置,所以比较方便。这里仅说明通过不针对特定平台的通用安装二进制文件安装方式。
2.下载安装包:
官方下载地址:
http://dev.mysql.com/downloads/mysql/#downloads
或镜像文件下载:
http://dev.mysql.com/downloads/mirrors.html
3. 下载文件(根据操作系统选择相应的发布版本):
mysql-5.5.49-linux2.6-i686.tar.gz
4. 安装步骤
a. 检查是否已安装,grep的-i选项表示匹配时忽略大小写
[root@localhost JavaEE]#rpm -qa|grep -i mysql mysql-libs-5.1.-.el6.x86_64
*可见已经安装了库文件,应该先卸载,不然会出现覆盖错误。注意卸:载时使用了--nodeps选项,忽略了依赖关系:
[root@localhost JavaEE]#rpm -e mysql-libs-5.1.-.el6.x86_64 --nodeps
b. 添加mysql组和mysql用户,用于设置mysql安装目录文件所有者和所属组。
[root@localhost JavaEE]#groupadd mysql [root@localhost JavaEE]#useradd -r -g mysql mysql
* useradd -r参数表示mysql用户是系统用户,不可用于登录系统,-g是将用户mysql添加到mysql组中。
c. 将二进制文件解压到指定的安装目录,我们这里指定为/usr/local
[root@localhost ~]# cd/usr/local/ [root@localhost local]#tar zxvf /soft/mysql-5.5.-linux2.-x86_64.tar.gz(解包并解压)
*解压后在/usr/local/生成了解压后的文件夹mysql-5.5.29-linux2.6-x86_64,这名字太长,我们为它建立一个符号链接mysql,方便输入。
[root@localhost local]#ln -s mysql-5.5.-linux2.-x86_64 mysql
d. /usr/local/mysql/下的目录结构
Directory |
Contents of Directory |
bin |
Client programs and the mysqld server |
data |
Log files, databases |
docs |
Manual in Info format |
man |
Unix manual pages |
include |
Include (header) files |
lib |
Libraries |
scripts |
mysql_install_db |
share |
Miscellaneous support files, including error messages, sample configuration files, SQL for database installation |
sql-bench |
Benchmarks |
e. 进入mysql文件夹,也就是mysql所在的目录,并更改所属的组和用户。
[root@localhost local]#cd mysql [root@localhost mysql]#chown -R mysql . [root@localhost mysql]#chgrp -R mysql .
f. 执行mysql_install_db脚本,对mysql中的data目录进行初始化并创建一些系统表格。注意mysql服务进程mysqld运行时会访问data目录,所以必须由启动mysqld进程的用户(就是我们之前设置的mysql用户)执行这个脚本,或者用root执行,但是加上参数--user=mysql。
[root@root mysql]scripts/mysql_install_db --user=mysql
*如果mysql的安装目录(解压目录)不是/usr/local/mysql,那么还必须指定目录参数,如
[root@root mysql]scripts/mysql_install_db --user=mysql \ --basedir=/opt/mysql/mysql \ --datadir=/opt/mysql/mysql/data
*mysql_install_db参考:http://dev.mysql.com/doc/refman/5.5/en/mysql-install-db.html#option_mysql_install_db_basedir
*将mysql/目录下除了data/目录的所有文件,改回root用户所有,mysql用户只需作为mysql/data/目录下所有文件的所有者。
[root@root mysql]chown -R root . [root@root mysql]chown -R mysql data
g. 复制配置文件
[root@root mysql] cp support-files/my-medium.cnf /etc/my.cnf
h. 将mysqld服务加入开机自启动项。
*首先需要将support-files/mysql.server服务脚本复制到/etc/init.d/,并重命名为mysqld。
[root@root mysql] cp support-files/mysql.server /etc/init.d/mysqld(使用cp命令同时能重命名)
*通过chkconfig命令将mysqld服务加入到自启动服务项中。
[root@root mysql]#chkconfig --add mysqld
*注意服务名称mysqld就是我们将mysql.server复制到/etc/init.d/时重命名的名称。
*查看是否添加成功
[root@root mysql]#chkconfig --list mysqld mysqld :off :off :on :on :on :on :off
i. 重启系统,mysqld就会自动启动了。
*检查是否启动
[root@root mysql]#netstat -anp|grep mysqld (查看mysqld的端口状态) tcp 0.0.0.0: 0.0.0.0:* LISTEN /mysqld unix [ ACC ] STREAM LISTENING /mysqld /tmp/mysql.sock
*如果不想重新启动,那可以直接手动启动。
[root@root mysql]#service mysqld start Starting MySQL.. SUCCESS!
j. 运行客户端程序mysql,在mysql/bin目录中,测试能否连接到mysqld。
[root@root mysql]#/usr/local/mysql/bin/mysql Welcome to the MySQLmonitor. Commands end with ; or \g. Your MySQL connection idis Server version:5.5.-log MySQL Community Server (GPL) Copyright (c) , ,Oracle and/or its affiliates. All rights reserved. Oracle is a registeredtrademark of Oracle Corporation and/or its affiliates. Other names may betrademarks of their respective owners. Type 'help;' or '\h' forhelp. Type '\c' to clear the current input statement. mysql> Bye
k. 初始化root用户的密码:
[root@root mysql]#mysqladmin -u root password "new_password" [root@root mysql]#mysqladmin -u root -h host_name password "new_password"
*host_name是主机名,通过命令hostname可以获取到。
l. 为了避免每次都输入mysql的全路径/usr/local/mysql/bin/mysql,可将其加入环境变量中,在/etc/profile最后加入两行命令:
MYSQL_HOME=/usr/local/mysql export PATH=$PATH:$MYSQL_HOME/bin
在终端中输入:
[root@root3 mysql]# source /etc/profile
使修改的环境变量生效。
这样就可以在shell中直接输入mysql命令来启动客户端程序了。
[root@root mysql]#mysql Welcome to the MySQLmonitor. Commands end with ; or \g. Your MySQL connection idis Server version:5.5.-log MySQL Community Server (GPL) Copyright (c) , ,Oracle and/or its affiliates. All rights reserved. Oracle is a registeredtrademark of Oracle Corporation and/or its affiliates. Other namesmay be trademarks of their respective owners. Type 'help;' or '\h' forhelp. Type '\c' to clear the current input statement.
mysql>
5.安装过程中碰到的一些错误
a. 当我在局域网其他机器的客户端访问这个mysql的时候,报如下错误:
C:\Users>mysql -uroot -p123456 -h 192.168.0.17 mysql: [Warning] Using a password on the command line interface can be insecure.ERROR (HY000): Host '192.168.0.7' is not allowed to connect to this MySQL server
这段话的大体意思是192.168.0.7这台机器不允许连接mysql,通过在服务器端连接mysql,查看mysql数据库中的user表:
mysql> use mysql
Database changed
mysql> select user,host from user;
+------+-----------+
| user | host |
+------+-----------+
| root | 127.0.0.1 |
| root | :: |
| | localhost |
| root | localhost |
+------+-----------+
rows in set (0.00 sec)
由以上所知:root用户只允许在127.0.0.1和localhost上连接,说明192.168.0.7没有权限连接mysql。开启远程连接.
1).授权法
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.7' IDENTIFIED BY '' WITH GRANT OPTION;
Query OK, rows affected (0.23 sec) mysql> select user,host from user ;
+------+-------------+
| user | host |
+------+-------------+
| root | 192.168.0.7 |
| root | 127.0.0.1 |
| root | :: |
| | localhost |
| root | localhost |
+------+-------------+
rows in set (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.68 sec)
通过这条语句,允许地址192.168.0.7上用root用户,密码123456来连接mysql的所有数据库,付给select,insert,update,delete权限。如果要允许所有的ip,则用'%'替换ip地址。
开启远程登录参考: Mysql开启远程连接方法。
b.在做Mysql初始化的时候,报错The host 'root' could not be looked up with resolveip.解决方法如下:
[root@root mysql]#/usr/local/mysql/bin/resolveip root
/usr/local/mysql/bin/resolveip: Unable to find hostid for 'root': host not found
[root@root mysql]#hostanme
root
[root@root mysql]#cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 :: localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@root mysql]#vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 :: localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 root --添加的一行
[root@root mysql]#/usr/local/mysql/bin/resolveip root
IP address of root is 127.0.0.1
最后运行mysql初始化
[root@root mysql]#./script/mysql_db_install
c. 防火墙的问题。
a.关闭防火墙
http://www.cnblogs.com/machanghai/p/5464714.html
b.将相关服务端口放开。
d. 如果远程和本地都登陆不上mysql服务器,因为要修改msyql数据库的user表的数据,这个表保存着登录的权限信息,可采用以下方法:
a.如果mysql启动着,先关闭mysql服务器。
b.mysqld_safe --user=mysql --skip-grant-tables --skip-networking & (跳过权限表的启动方式)
c.此时就可以访问到mysql数据库了。可以通过sql语句修改user表的权限信息即可。(注意user是root,host是localhost的数据必须存在)。
d.因为此时mysql是以跳过权限表的方式启动的,所以要关闭mysql服务器,使用命令mysqladmin -uroot -p shutdown。然后以正常方式启动。
e. 使用service mysqld start时候启动错误:Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/data/mch.pid).
第一个mysql启动不了了,我重新安装mysql的时候报错,解决方法参考:http://www.111cn.net/database/mysql/47258.htm
f. Mysql默认访问的目录是/usr/local/mysql, 如果安装的mysql不在/usr/local/mysql目录下的话,一定要设置my.cnf配置文件的datadir和basedir目录。不然mysql启动不了。
参考文章:1.http://blog.csdn.net/superchanon/article/details/8546254/
2.http://dev.mysql.com/doc/refman/5.5/en/default-privileges.html
3.http://dev.mysql.com/doc/refman/5.5/en/binary-installation.html
4.http://www.tuicool.com/articles/RZJnim