目录
前几天帮同事安装了mysql,想着很简单,上手装的时候遇到了各种问题,在此做个记录。
1.卸载mysql
前面同事安装了mysql,但是没有成功,需要先卸载。
查看安装情况:
rpm -qa |grep -i mysql
卸载:
yum -y remove mysql*(上条命令的执行结果)
删除文件:
find / -name mysql
rm -rf 删除上面查到的文件
2.安装
1)下载安装包
官网地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
或在服务器上直接下载
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
2)上传解压
下载完成后将压缩包上传至服务器,并解压至/usr/local目录下,如果放在其他目录下,数据库初始化的时候会报cannot change dir的错误。
解压命令:
tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
将解压后的目录重新命名,以方便后续操作(有些配置文件默认值为/usr/local/mysql)
cd /usr/local
mv mysql-5.7.17-linux-glibc2.5-x86_64/ mysql
3)创建目录
创建data目录
cd /usr/local/mysql/
mkdir data
赋予权限,为了麻烦直接给了个777
chmod -R 777 data/
4)创建用户
创建mysql用户,用于管理mysql相关的目录以及初始化时使用。
命令:
groupadd mysql
useradd -r -g mysql mysql
改变mysql目录的所属:
cd /usr/local
chown -R mysql:mysql mysql/
顺便创建另外一个目录,后面配置要用
cd /var/lib
mkdir mysql
chown -R mysql:mysql mysql
5)修改配置文件
cd /etc/
vim my.cnf
在[mysqld]下增加参数
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
character-set-server = utf8
explicit_defaults_for_timestamp = true
其他参数不用管,也可以注释掉,如果后面的操作报:XXX thread_concurrency = 8 XXX,就需要将此项注释掉。
6)初始化
cd /usr/local/mysql/bin/
./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
初始化成功后,会生成root用户的密码,记录一下,后面登录会用到。
7)设置启动命令
cd /usr/local/mysql/support-files/
cp mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql
将basedir、datadir赋值
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data/
保存退出。
授予执行权限:
chmod +x /etc/init.d/mysql
设为开机启动:
chkconfig --add mysql
8) 启动mysql服务端
service mysql start
其他命令:
停止服务:service mysql stop
重启服务:service mysql restart
查看服务:service mysql status
也可以使用:/etc/init.d/mysql start/stop/status
9)登录
cd /usr/local/mysql/bin
./mysql -u root -p
输入初始化时生成的root用户密码
修改root用户密码:
set password=password("123456");
授予远程登录权限 :
grant all privileges on *.* to'root' @'%' identified by '123456';
授权生效:
flush privileges;
10)关闭防火墙
systemctl stop firewalld
这样就可以使用第三方工具,用root/123456连接mysql了
3.报错
1)Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’
解决方法:
创建目录,并授予权限:
cd /var/lib
mkdir mysql
chown -R mysql:mysql mysql
修改配置文件
cd /etc
vim my.cnf
在[client] 、[mysqld] 、[mysql],分别增加(mysqld中有)
socket = /var/lib/mysql/mysql.sock
2)The server quit without updating PID file
这个是因为先前创建的data目录没有赋予权限(这个步骤先前已操作)
解决方法:
cd /usr/local/mysql
chmod -R 777 data/
chown -R mysql:mysql mysql
3)unknown variable 'thread_concurrency=8'
解决方法:
cd /etc
vim my.cof
找到thread_concurrency=8,注释掉
4)每次启动失败需要将data文件中的内容全部删除,否则再次启动时会报data目录中一些文件已存在的问题
cd /usr/local/mysql/data
rm -rf ./*