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快。