LNMP之二进制安装mysql-5.5.54

目录

  • 1 什么是MySQL
  • 2 为什么选择MySQL数据库
  • 3 MySQL的安装方式
  • 4 MySQL二进制安装
  • 5 故障排查

1 什么是MySQL

  • MySQL是一种关系型数据库管理软件(关系型数据库就类似一张二维表,表与表之间会有关联),关系型数据库的特点是将数据保存在不同的二维表中,并且将这些表放入不同的数据库中,而不是把所有数据统一放在一个大仓库里,这样的设计增加了MySQL的读取速度,灵活性和可管理性也得到了很大提高。
  • 访问及管理MySQL数据库的最常用标准化语言为SQL结构化查询语言。

2 为什么选择MySQL数据库

目前绝大多数使用Linux操作系统的互联网企业都在使用MySQL作为后端的数据库,从大型的BAT门户,到电商门户平台、分类门户平台等无一例外。MySQL的优势有以下几点:

  • 性能卓越,服务稳定,很少出现异常宕机。

  • 开放源代码且无版权制约,自主性强,使用成本低。

  • 历史悠久,社区及用户非常活跃,遇到问题,可以很快获取帮助。

  • 软件体积小,安装使用简单,并且易于维护,安装及维护成本低。

  • 支持多种操作系统,提供多种API接口,支持多种开发语言,特别对流行的PHP语言无缝支持。

  • 品牌口碑效应,是的企业无需考虑就直接用之

3 MySQL的安装方式

序号 MySQL安装方式 特点说明
1 yum/rpm包安装 特点是简单、速度快,但是没法定制安装,入门新手常用这种方式。
2 二进制安装 解压酸碱简单配置后就可以使用,不用安装,速度较快,专业DBA喜欢这种方式。软件名如: mysql-5.5.54-linux2.6-x86_64.tar.gz
3 源码编译安装 特点是可以定制参数安装,但是安装时间长,例如:字符集安装路径,等等。软件名如:mysql-5.5.54.tar.gz
4 源码软件结合yum/rpm来安装 把源码软件制作成符合要求的rpm,放到yum仓库里,通过yum来安装。结合上面1和3的优点,即安装快速,可以任意定制参数,但是也需要具备更深能力的人员才行。

4 MySQL二进制安装

# 获取mysql-5.5.54的二进制包
wget -O /home/oldboy/tools http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.54-linux2.6-x86_64.tar.gz
# 下载mysql-5.5.54的md5文件,校验是否有误
wget -O /home/oldboy/tools http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.54-linux2.6-x86_64.tar.gz.md5
[root@web01 tools]# cat mysql-5.5.54-linux2.6-x86_64.tar.gz.md5 
cfdc6bbd88e58c6207ffa290bad531b1  mysql-5.5.54-linux2.6-x86_64.tar.gz
[root@web01 tools]# md5sum -c mysql-5.5.54-linux2.6-x86_64.tar.gz.md5
mysql-5.5.54-linux2.6-x86_64.tar.gz: OK
# 若是下载比较缓慢,可先用迅雷下载到本地,然后rz上传到虚拟机上。
# 创建mysql用户
[root@web01 tools]# useradd mysql -s /sbin/nologin -M
[root@web01 tools]# id mysql
uid=504(mysql) gid=504(mysql) groups=504(mysql)
# 解压mysql二进制包,需要稍等一会,文件略大
[root@web01 tools]# tar -xf mysql-5.5.54-linux2.6-x86_64.tar.gz
[root@web01 tools]# mv mysql-5.5.54-linux2.6-x86_64 /application/mysql-5.5.54
[root@web01 tools]# ln -s /application/mysql-5.5.54/ /application/mysql
[root@web01 tools]# ls /application/mysql
COPYING         README  data  include  man         scripts  sql-bench
INSTALL-BINARY  bin     docs  lib      mysql-test  share    support-files
# 初始化数据库
[root@web01 tools]# cd /application/mysql/
[root@web01 mysql]# chown -R mysql.mysql /application/mysql/
[root@web01 mysql]# ./scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data/ --user=mysql
......
OK
Filling help tables...
180321 10:34:46 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
180321 10:34:46 [Note] /application/mysql/bin/mysqld (mysqld 5.5.54) starting as process 2832 ...
OK
......
# 出现以上这两个ok即代表已经安装成功
# 注意/tmp目录权限必须为1777,hosts文件也要做解析,否则在初始化安装的时候会报错
[root@web01 mysql]# ll -d /tmp/
drwxrwxrwt. 3 root root 4096 Mar 21 10:34 /tmp/
[root@web01 mysql]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5      lb01
172.16.1.6      lb02
172.16.1.7      web02
172.16.1.8      web01
172.16.1.51     db01 db01.etiantian.org
172.16.1.31     nfs01
172.16.1.41     backup
172.16.1.61     m01
# 由于我们安装的目录是/application/,而系统默认的安装目录是/usr/bin/,故需修改启动文件中的目录
[root@web01 mysql]# cd bin/
[root@web01 bin]# sed 's#/usr/local/#/application/#g' mysqld_safe |grep application  #先测试
[root@web01 bin]# sed -i 's#/usr/local/#/application/#g' mysqld_safe    #再修改
# 覆盖mysql配置文件
[root@web01 bin]# cd ..
[root@web01 mysql]# cp support-files/my-small.cnf /etc/my.cnf 
cp: overwrite `/etc/my.cnf'? y
# 启动
[root@web01 mysql]# /application/mysql/bin/mysqld_safe --user=mysql &
# 可能会报以下错误,只需创建/var/lib/mysql目录即可
mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists
[root@web01 mysql]# mkdir /var/lib/mysql
[root@web01 mysql]# /application/mysql/bin/mysqld_safe --user=mysql &
[1] 3179
[root@web01 mysql]# Logging to '/application/mysql/data/web01.err'.
180321 10:59:57 mysqld_safe Starting mysqld daemon with databases from /application/mysql/data

[root@web01 mysql]# lsof -i :3306       # 发现3306端口已经被监听,服务已启动
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  3402 mysql   10u  IPv4  26971      0t0  TCP *:mysql (LISTEN)
# 登录mysql测试
[root@web01 mysql]# /application/mysql/bin/mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.54 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>      # 到此已经安装成功

# 增加/application/mysql/bin:到环境变量中,并永久生效
[root@web01 mysql]# PATH="/application/mysql/bin:$PATH"
[root@web01 mysql]# which mysql
/application/mysql/bin/mysql
[root@web01 mysql]# tail -1 /etc/profile
PATH="/application/mysql/bin:$PATH"
[root@web01 mysql]# . /etc/profile
[root@web01 mysql]# echo $PATH
/application/mysql/bin:/application/mysql/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# 这里需要注意,全局路径配置一定要放在前面,否则会出现错误。
# 由于全局路径配置不当导致的问题案例http://blog.51cto.com/oldboy/1122867

#或者是直接把/application/mysql/bin/目录给拷贝到/usr/local/sbin/目录下
cp -a /application/mysql/bin/* /usr/local/sbin/

# 启动mysql的时候需要/application/mysql/bin/mysqld_safe,修改一下配置文件,直接/etc/init.d/mysqld start 即可
[root@web01 mysql]# sed 's#/usr/local/#/application/#g' support-files/mysql.server |grep application
# If you install MySQL on some other places than /application/mysql, then you
  basedir=/application/mysql
  bindir=/application/mysql/bin
    datadir=/application/mysql/data
  sbindir=/application/mysql/bin
  libexecdir=/application/mysql/bin
[root@web01 mysql]# sed -i 's#/usr/local/#/application/#g' support-files/mysql.server
[root@web01 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@web01 mysql]# chmod +x /etc/init.d/mysqld
[root@web01 mysql]# /etc/init.d/mysqld stop
Shutting down MySQL.180321 11:09:34 mysqld_safe mysqld from pid file /application/mysql/data/web01.pid ended
 SUCCESS! 
[1]+  Done                    /application/mysql/bin/mysqld_safe --user=mysql
# 查看3306端口是否已经停用
[root@web01 mysql]# lsof -i :3306
[root@web01 mysql]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS! 
[root@web01 mysql]# lsof -i :3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  4016 mysql   10u  IPv4  27874      0t0  TCP *:mysql (LISTEN)
# 添加至开机自启动
[root@web01 mysql]# chkconfig --add mysqld
[root@web01 mysql]# chkconfig mysqld on
[root@web01 mysql]# chkconfig --list mysqld
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
# 查看MySQL数据库启动结果日志
[root@web01 mysql]# tail -10 /application/mysql/data/web01.err
# 为root用户设置新密码
[root@web01 mysql]# mysqladmin -u root password 'oldboy123'     #当root密码为空时设置
[root@web01 mysql]# mysqladmin -u root -h web01 password 'oldboy123' #当root密码不为空时设置root密码需要加-h选项来指定主机名。
[root@web01 mysql]# mysqladmin -u root -p oldboy123 password '123456' #也可在已知root密码情况下更改root密码

5 故障排查

# 如果有下面提示这里无法登录,排除了数据库启动问题后,则很有可能是数据库初始化文件有问题。
[root@web01 ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

上述问题可能的3种原因和解决办法:

1、删除并重新初始化数据库,出现此问题一般都是因为数据库初始化有问题

2、或者是mysql数据库文件损坏,也可能是mysql数据目录权限有问题

3、检查主机名对应主机IP解析是否正确

你可能感兴趣的:(Linux,LNMP)