linux下安装mysql

  安装mysql的几种方法:

  1、操作系统自带的rpm包;2、mysql官方的rpm包;3、通用二进制格式;4、源码编译

  下面用园码编译的方法安装,下载地址是 http://pan.baidu.com/s/1pJOhujh

  解压缩:tar -zxf mysql-5.5.36.tar.gz

  切换到解压目录:cd mysql-5.5.36

  安装编译环境:yum install readline-devel ssl-devel zlib-devel gcc gcc-c++ ncurses-devel cmake -y

  编译:cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql

   -DMYSQL_DATADIR=/mydata/data
          -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1
   -DWITH_ARCHIVE_STORAGE_ENGINE=1
          -DWITH_BLACKHOLE_STORAGE_ENGINE=1
          -DWITH_READLINE=1
          -DWITH_SSL=system
          -DWITH_ZLIB=system
          -DWITH_LIBWRAP=0
          -DMYSQL_UNIX_ADDR=/tmp/mysql.sock
          -DDEFAULT_CHARSET=utf8
          -DDEFAULT_COLLATION=utf8_general_ci

  最后就是male 和 make install了。

  当然上诉的安装环境不是一次就能成功的,我这是在自己的机器上的环境,也是经过多次测试才成功的。如果在你的机器上,可能也需要经过几次失败。如果失败后,需要先删除CMakeCache.txt后再编译。下面是我报的错误:

CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found. 需要安装gcc-c++

Curses library not found.  Please install appropriate package。需要安装ncurses-devel

  安装完后就是mysql的初始化工作了。

  1、修改用户与组:

  添加mysql组:groupadd -r mysql;添加mysql用户:useradd -r -g mysql -s /sbin/nologin

  创建/mydata/data目录:mkdir -p /mydata/data

  修改:chown  -R :mysql /usr/local/mysql ; chown -R mysql:mysql /mydata/data

  2、执行初始化脚本:scripts/mysql_install_db --user=mysql --datadir=/mydata/data

如果报如下错误的解决办法:MySQL server PID file could not be found!

我出错的原因是我在centos7上安装的,可能是systemd与原来的sysV不是蛮兼容,导致用service启动时一直.....,但不提示启动成功,但是用netstat查看3306端口被监听,并且用mysql也能连上,并且service mysqld stop也不好用,会提示MySQL server PID file could not be found!,这个我不知道是什么错误。因此每次都必须用kill杀掉进程。如果不杀就会提示The server quit without updating PID file.杀掉进程后,就会启动成功了。

1.可能是/mydata/data/rekfan.pid文件没有写的权限
解决方法 :chmod -R mysql:mysql /mydata/data/

2.可能进程里已经存在mysql进程
解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9  进程号”杀死,然后重新启动mysqld!

3.可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。本人就是使用第三条方法解决的 !http://blog.rekfan.com/?p=186

4.mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。
解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data

5.skip-federated字段问题
解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6.错误日志目录不存在
解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限

7.selinux惹的祸,如果是centos系统,默认会开启selinux
解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。

如果忘记mysql的登陆密码可以按如下修改:

  修改mysql的配置文件/etc/my.conf,在其中添加skip-grant-tables

  例如:
  [mysqld]
  datadir=/var/lib/mysql
  socket=/var/lib/mysql/mysql.sock
  skip-grant-tables

再重启mysqld,重新连接即可修改登陆密码了。

  建议在centos7上还是用mariaDB。

  安装yum install mariadb mariadb-server -y

  启动服务器systemctl start mariadb

  启动客户端mysql -u root -h 127.0.0.1。不推荐-h localhost,因为这是基于unix socket,只能在同一台主机,虽然连接速度比tcp/ip快。

  

原文地址:https://www.cnblogs.com/Jc-zhu/p/4709376.html