linux安装mysql数据库

linux下安装MySQL主要有两种方法:
第一种是通过源码自行编译安装,这种适合高级用户定制MySQL的特性,这里不做说明。
第二种是通过编译过的二进制文件进行安装。二进制文件安装的方法又分为两种:一种是不针对特定平台的通用安装方法,使用的二进制文件是后缀为.tar.gz的压缩文件;另一种是使用RPM或其他包进行安装,这种安装进程会自动完成系统的相关配置,所以比较方便。

RPM安装包安装

安装包

安装包安装需要如下的两种rpm安装包:
MySQL-server-5.5.31-2.el6.i686.rpm
MySQL-client-5.5.31-2.el6.i686.rpm

安装步骤

检查是否有mysql服务

检查是否已经安装了mysql,其中grep -i表示匹配时候忽略大小写

#rpm -qa|grep -i mysql

如果已经安装了库文件,应该先卸载,不然会出现覆盖错误。注意卸载的时候使用–nodeps选项,忽略依赖关系:

#rpm -e mysql-libs-5.1.61-4.el6.x86_64 --nodeps

安装Mysql服务端软件,注意切换到Root用户

#rpm -ivh MySQL-server-5.5.29-2.el6.x86_64.rpm

安装完成后,安装进程会在linux中添加一个mysql组,以及属于mysql组的mysql用户,可以使用id命令来查看

#id mysql
uid=496(mysql)gid=493(mysql) groups=493(mysql)

mysql服务端安装之后虽然配置了相关文件,但是并没有自动启动mysqld服务,需要手动启动:

#service mysql start
Starting MySQL.. SUCCESS!

启动后,可以通过检查3306端口是否开启来查看mysql服务是否正常启动

#netstat -anp|grep 3306
tcp    0    0 0.0.0.0:3306 0.0.0.0:*    LISTEN    34693/mysqld

安装mysql客户端软件

#rpm -ivh MySQL-client-5.5.29-2.el6.x86_64.rpm

如果安装成功应该可以运行mysql命令,注意必须是mysqld服务以及开启:

#mysql 

即可进入页面

为新数据库设置密码

第一次登陆mysql为mysql设置密码:

/usr/bin/mysqladmin -uroot password 123456

修改密码语法:

mysqladmin -u用户名 -p旧密码 password 新密码

通用方法安装

安装包

通用方法安装需要如下的安装包
mysql-5.5.29-linux2.6-x86_64.tar.gz

安装步骤

检查是否有mysql服务

检查是否已经安装了mysql,其中grep -i表示匹配时候忽略大小写

#rpm -qa|grep -i mysql

如果已经安装了库文件,应该先卸载,不然会出现覆盖错误。注意卸载的时候使用–nodeps选项,忽略依赖关系:

#rpm -e mysql-libs-5.1.61-4.el6.x86_64 --nodeps

添加mysql用户和mysql组

添加mysql组和mysql用户,用于设置mysql安装目录文件所有者和所属组。

#groupadd mysql
#useradd -r -g mysql mysql

*useradd -r参数表示mysql用户是系统用户,不可用于登录系统。

解压mysql文件

将二进制文件解压到指定的安装目录,我们这里指定为/usr/local

#cd /usr/local/
#tar -zxvf /path/to/mysql-5.5.29-linux2.6-x86_64.tar.gz
#mv mysql-5.5.29-linux2.6-x86_64 mysql

改变mysql目录所属的组和用户

#cd mysql
#chown -R mysql .
#chgrp -R mysql .

进入mysql文件夹,并更改所属的组和用户

执行安装脚本

执行mysql_install_db脚本,对mysql中的data目录进行初始化并创建一些系统表格。
注意mysql服务进程mysqld运行时会访问data目录,所以必须由启动mysqld进程的用户执行这个脚本,或者root用户执行,但是加上参数–user=mysql

#scripts/mysql_install_db --user=mysql

如果mysql的安装目录(解压目录)不是/usr/local/mysql,那么还必须指定目录参数,如下:

#scripts/mysql_install_db --user=mysql \
--basedir=/opt/mysql/mysql \
--datadir=/opt/mysql/mysql/data

将mysql/目录下除了data/目录的所有文件,改回root用户所有,mysql用户只需作为mysql/data/目录下所有文件的所有者。

# chown -R root .
# chown -R mysql data

复制配置文件my.cnf

cp support-files/my-medium.cnf /etc/my.cnf

将mysqld服务加入开机启动项

首先需要将scripts/mysql.server服务脚本复制到/etc/init.d/,并重命名为mysqld。

# cp support-files/mysql.server /etc/init.d/mysqld

通过chkconfig命令将mysqld服务加入到自启动服务项中。

# chkconfig --add mysqld

注意服务名称mysqld就是我们将mysql.server复制到/etc/init.d/时重命名的名称。

查看是否添加成功

#chkconfig --list mysqld
mysqld    0:off 1:off    2:on    3:on    4:on    5:on    6:off

重启系统,mysqld就会自动启动了,检查是否启动

# netstat -anp|grep mysqld    
tcp    0    0 0.0.0.0:3306    0.0.0.0:*     LISTEN    2365/mysqld
unix  2     [ ACC ]     STREAM     LISTENING     14396 2365/mysqld        /tmp/mysql.sock

如果不想重新启动,那可以直接手动启动。

# service mysqld start
Starting MySQL.. SUCCESS!

配置环境变量

MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin

然后使用source /etc/profile来使环境变量立即生效,然后使用mysql启动客户端程序!

扩展

查看数据库的字符集编码

使用如下命令可以看到mysql字符集编码

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

这儿建议在创建数据库和数据库表的时候设置编码,这样保证后面不会出现乱码的问题,修改配置文件,新建或者拷贝一份:

cp /usr/share/mysql/my-small.cnf /etc/my.cnf

修改为如下内容:

[client]
default_character_set=utf8

[mysqld]
character_set_server=utf8 
# 5.5版本以后使用character_set_server
# 5.5之前使用default_character_set
init_connect='SET NAMES utf8'

重启mysql服务,再重新查看编码,就会发现所有的都变成了utf-8编码

service mysql/mysqld restart  
# mysqld是5.5版本一下的启动方式

设置mysql可以让外网能够访问

使用root权限登录mysql,更新mysql.user表,设置指定用户的host字段为%,默认的为127.0.0.1或者localhost。
mysql.user中的host字段说明:

% 允许从任何ip地址登录
x.x.x.x 允许从指定的ip地址访问

步骤如下:

use mysql;
select host,user from user;
update user set host='%' where user ='root';
select host,user from user;
flush privileges;

如此,就可以访问从其他ip地址访问mysql