Linux记录-4.22 MySQL 5.7.37 安装 及加入服务列表(补充)

MySQL官网  https://www.mysql.com/

社区版 是免费的

Generic 一般版,普通版

点 Archives 其他版本,进入可以选版本号,点download ,复制下载链接

安装wget工具

wget下载

(当然win上下完了传上来也是一样的)

删除系统原有自带的mysql(如果有的话)。

grep -i  忽略大小写。

rpm  -ev  对查出来的包进行强制删除

find查之前的mysql目录,并使用rm -rf  把这个文件夹名删除

删除my.cnf ,以前安装的配置文件

rm -rf /etc/my.cnf

解压安装

改名并迁移位置

建立目录,用于放置数据库的数据。

查看mysql用户和组是否存在,没有则创建

/etc/group 中查看组

groupadd 创建一个组

useradd  -M -s /sbin/nologin mysql      创建一个无登入目录,登入后使用指定shell的MySQL用户。

useradd  -g mysql  mysql  把一个新建用户加到一个组里(跟在-g后是组名)。

指定shell是/sbin/nologin表示是无登录的用户,账号只是用于服务,对系统安全。

useradd -M -s /sbin/nologin -g mysql mysql

useradd        创建一个用户

-M                 不自动创建/home/mysql这个家目录,这是用户登入目录

                      (在/etc/passwd看,虽然会显示,但是是红色,非真实存在,见下图)

-r                建立系统帐号.

-g   群组名  指定用户所属的群组。

-s   登录后使用的shell名     指定用户登入后所使用的shell 。

                       设为/sbin/nologin  是无法登录系统的

                        设为/bin/bash  是可以登录系统的。(默认设置)

/etc/passwd  中查看用户

chown指定mysql数据目录的拥有者。即设定属主,属组。

chown -R mysql:mysql  /data/mysql

-R  表示处理指定目录以及其子目录下的所有文件

ls -la 查看隐藏文件, /data/mysql 文件夹的属主属组。        . 是本文件夹           .. 是上一级文件夹

解压目录下几个重要文件的作用

XXX /bin/mysqld  --initialize    是安装用的

XXX /support-files/mysql.server  start    启动服务用的脚本

XXX/bin/mysql   -uroot    进入mysql的可执行文件

$basedir/support-files/mysql.server   把mysql服务启动一下。

启动显示log没设置,是因为没有写权限。

还有个错误是PID没有找到,PID在没有启动之前确实是不存在的。

给.log文件一个mysql 用户权限。然后touch手动创建一个.log文件。

创建mysql.log后重启服务不再报错了,但PID的错误还存在。

PID是mysql启动后会自动创建的,目前还没有只是因为还没有启动成功。

 

为啥一直没启动成功呢?

看启动服务的mysql.server的内容可知,start启动的时候,实际启动的是/usr/local/mysql/bin/mysqld_safe

由于我们前面设定的是mysql用户组启动,而我们这里是用root来操作的,所以这里要加上

--user=root  不然会导致启动报错。 

 

修改完成以后,再次start,成功启动。

ps -ef 验证一下,已经有mysql的PID了。

 但  netstat  -lntp  发现tcp的3306端口还没开始监听。这说明通信现在还存在问题。

去$basedir/bin/mysql 下先登陆一下试试:

安装时候最末尾A temporary password......有提示默认的root@localhost 用户的密码。

 root@localhost 表示是本地的root用户。

(安装时信息截图)

 ./mysql -uroot  登录一下,发现socket通信文件没找到,这就是TCP3306还没被监听的原因。

虽然socket文件已经在定义的路径 /usr/local/mysql/mysql.sock 下自动生成了,但不知道为何还会去/tmp/mysql.sock这个路径找。(后面知道原因了我再来补充)(已找到原因)

当前处理方式把生成的  mysql.sock  和需要的  /tmp/mysql.sock  做软连接。

(养成好习惯,软链接一定要写绝对路径)

这里socket 还会报错原因是:单独只设定了服务端的socket

 

 客户端和服务端的 socket  文件必须一致,但因为经常不写客户端配置(也就是【mysql】),而客户端socket默认是 /tmp/mysql.sock ,就会导致当服务端配置了其他的路径时候会发生上面报错。

把/etc/my.cnf 文件中加上客户端的配置如下。可写成【mysql】或【client】,只要2个端的socket对应一致就没问题了。

在$basedir/bin/mysql 再试试登录 

(注意当初始默认密码中有 ;时直接  -p+密码明文  的写法会报错,系统会认为到分号时命令已结束。这种情况只能通过密文的方式输入密码。)

登陆成功。

刚登录进去的时候,数据库就会提示你必须用 alter user 来改密码才能去执行其他命令。

直接alter user root 会失败,这个是给当前用户以外的用户设定。

alter user user() 才能当前用户的密码。

修改账号密码格式(mysql5.7以上版本)

alter user 用户名 identified by '新密码';                 

exit退出后,用新密码进入一次,成功。 

加入启动服务列表:

mysql.server 实际是一个启动脚本

linux CentOS6 以来有一个chkconfig的系统服务管理命令,chkconfig --list列出所有的系统服务。

但是在Centos7 以后不能列出全部了,会提示使用 systemctl list-unit-files ,查看具体的服务用systemctl list-dependencies XXX 

systemctl  list-unit-files           CentOS7 版本的列出所有服务

chkconfig --add mysqld 来把服务加入服务列表

先把文件放入/etc/init.d/ 下才能加入到服务列表,并且文件要有755权限

(原先chkconfig --list存在的2个也在里面)

启动级别

关闭服务   chkconfig mysqld off   ,关闭后不会自动随系统开机启动

启动服务   chkconfig mysqld on  ,开启后,开机会自动启动

这里先关掉,则chkconfig --list  查看可见2,3,4,5 变成了off

手动启动

/etc/init.d/mysqld  start 

只要加入到服务列表的还可以直接用service来启动。

service mysqld start  

虽然服务已经启动,但是直接用mysql命令还是无法进入数据库客户端。

这其实是因为mysql命令缺少系统环境变量路径。

平时直接输入的命令都会先去系统环境变量下搜索。

刚才可以进入客户端是用了/usr/local/mysql/bin/mysql 这个绝对路径,而只有在系统环境变量路径下的命令可以不用输入绝对路径

所谓系统环境变量路径可以从$PATH查看,

 

软链接到任意一个系统环境变量下

ln  -s  /usr/local/mysql/bin/mysql  /usr/bin/mysql

现在直接用mysql可以成功登录了。

还有一种方法,直接把mysql的路径加入到系统环境变量中

PATH=$PATH:/usr/local/mysql/bin                        (临时生效,用户退出后失效)

尽管删掉之前做的mysql软链接,依然可以直接mysql命令登录。

但上面直接加的方式只是临时生效。

永久生效要追加这个PATH命令到 /etc/profile

要加个 export  , echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile

export作用是做一个声明,不管是当前的shell还是子shell都生效。

  

source /etc/profile 可以立即让/etc/profile文件生效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值