安装参考链接
具体几天我不记得了,虽然没有一周,但也差不多。
反反复复各种搜bug贴,重来,再重来,再重来。。。。。。
总算,在各种尝试之后,我 成!功!了!
首先呢,mysql安装有几种方式,有用安装包的,yum下载安装,还有用docker等等一些方法;其中,机器能联网的,后两种比较简单
那,我选择的是第一种,我的考虑是
我们公司用的比较多的是第一种,但我是小白嘛,也不会让我安装配置,我就想学下;其次呢,听说第一种在企业用的也挺多的,所以,就用第一种喽;
下次可以试试使用后两种安装,毕竟有阿里云给我造嘿嘿嘿,不怕麻烦
废话不多说,走着
一、下载安装包,上传到服务器
根据自己的服务器类型进行选择
我下载的是最后一个,解压后有以下4个文件,我只用到了第二个。我看别人的教程说只要用第二个,以.xz结尾的。所以,可以直接下载👆第二个261M的那个
我下了最后一个,也直接用了
不要傻傻注册哦
使用远程连接工具将安装包上传到服务器,存储的文件夹希望你们好好规整下,初次上手,不能乱,必要时可以拿小本本记下来
我的所有安装包放在 /export/sort
加压包在 /export/install
复制mysql解压后的文件到/usr/local
,并重命名,所以真正的安装目录其实是/usr/local
二、创建用户和用户组
这一部包含创建用户组
创建mysql用户
创建mysql数据目录/data/mysql
(自己存放的位置目录)
赋予mysql该数据目录的权限
我进行这一步的时候,一头雾水,不知道为什么要创建用户组和mysql用户,不能直接用root操作吗
基于安全
让MySQL运行的时候使用一个独立的账号
如果MySQL被黑了那么开始拿到的权限就是那个创建的账号而不是默认的root
我们在编译安装的时候创建一个mysql组和一个mysql用户,并把datadir和安装目录属主改为mysql
在MySQL启动的时候,单进程mysqld,该进程的属主就是mysql
这样就保证了mysql服务的独立性,即使mysql服务被黑掉,得到了mysql用户权限,也不会影响整个系统的安全
三、编辑mysql启动文件-/etc/my.cnf
请完全按照格式,除了自己的安装目录及数据目录,其他的不要乱改乱换位置!!!
四、初始化mysql
我初始化显示成功了,也有密码;但在/data/mysql下找不到mysql.log日志文件;后来,我重新初始化了
这里说下重新初始化
,因为我操作了很多次,找不到问题就重新初始化,机智如我哈哈哈
# 1.清空数据目录(就是上面我授权的数据目录)
rm -rf /data/mysql
# 2.初始化数据库(这里的用户,安装目录,数据目录都要是自己建的)
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/
# 3.重新启动
/etc/init.d/mysql start
最后重启,如果mysql/mysqld命令找不到,报错bash: mysql:command not found
使用👇方法
cp /usr/local/mysql/support-files/mysql-server /etc/init.d/mysql
cp /usr/local/mysql/support-files/mysql-server /etc/init.d/mysqld
前面的/usr/local/mysql 对应自己的mysql安装目录
这样mysql / mysqld都可以使用了
五、登录并修改密码
使用mysql -uRoot -p
输入密码后报错
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
这里的mysql.sock
是我在my.cnf
配置文件中配置的
用whereis
命令找不到,find \ -name mysql.sock
可以找到
乱七八糟试了很多方法:什么移动my.cnf中socket的位置,或者自己在这个目录下新建一个mysql.sock,建立软连接等等
都!不!行!
因为/tmp/mysql.sock是mysql初始化时自己生成的,后来文件被我改乱了,只能重新初始化
后来使用下面的方法,立竿见影
首先看mysql是否启动/etc/init.d/mysqld status
,没启动则重启
启动了就继续下面的步骤
# 1.找到mysql.sock的位置。我找到了两个一个是my.cnf中配置的地址,还有一个在/tmp/mysql.sock
find / -name mysql.sock
# 2.一个个验证;就是用不同的文件尝试启动mysql
mysql -u root -p -S /var/lib/mysql/mysql.sock
注意,这里使用find
和 where
命令找到的结果有可能不一样,where找不到,用find命令试试
最后使用- S /tmp/mysql.sock
,启动成功
再把my.cnf配置文件里的socket=/var/lib/mysql/mysql.sock
这个换成/tmp/mysql.sock
对了,再次强调!!!my.cnf文件中除了mysql安装目录等按照本机地址配置,其他的不要乱改(如[client],[mysqld]等等),真的很容易出错
最后,我遇到的一些较为“个性化”的bug
- 报错
-bash ./mysqld No such file or directory
答:初始化需要进入mysql安装目录的bin目录下!!! - 尝试重新初始化报错
initialize specified but the data directory has files in it. Aborting
答:重新初始化要按照我上面的步骤,相关目录删干净 Starting MySQL... ERROR! The server quit without updating PID file
- 没有按照my.cnf中配置的那样生成mysql.log日志文件。初始化明明已经成功,密码也生成了,我居然找不到这个日志文件!查找的目录没有错哦,就是我的数据文件
/data/mysql
- 还有这个bug
unknown variable server-id=3306
等一系列的unknown variable。。。
用ps -ef | grep mysql
能查看mysql在运行,但是端口居然不是3306
一般出现上面最后3种情况,我的解决方案是
- 仔细检查my.cnf配置文件
- 给数据目录或者my.cnf授权这里给出了相关授权的操作
bug记录的差不多了,可能没有记全
希望你们马到成功!