centos7中手把手带你源码安装mysql5.7,保姆级服务!

Linux 同时被 2 个专栏收录
15 篇文章 0 订阅
23 篇文章 0 订阅

第一步:环境检查

1.1 查询系统自带的数据库

代码如下:

1. rpm -qa|grep mariadb

1.2 卸载系统自带的Mariadb

若没有系统自带的Mariadb就不用卸载!

代码如下:

1. rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64

1.3 删除默认配置文件

删除etc目录下的my.cnf文件,代码如下:

 1. rm /etc/my.cnf

1.4 检查mysql及用户组,

相关步骤代码如下:

检查mysql是否存在,返回值为空则不存在,如若存在就需要卸载存在的MySQL,卸载方法(如果是新系统一般情况下不存在,)

1. rpm -qa | grep mysql

检查mysql用户组、用户是否存在,不存在则创建

1. cat /etc/group | grep mysql   ###检查mysql用户组
2. cat /etc/passwd | grep mysql  ###检查mysql用户

如果mysql是存在的,这里可以删除mysql用户组mysql用户在重新创建,也可不删除,像我有强迫症的就把它删除了,重新进行了创建,删除方法如下:

1. id mysql  ###查询mysql用户组
2. userdel mysql   ###删除

1.5 添加mysql用户组及用户

1. groupadd mysql          ###添加mysql用户组
2. useradd -g mysql mysql  ###添加mysql用户到mysql用户组, 前面的mysql为用户组 后面的为mysql用户

第二章:下载源码并安装

2.1 下载mysql.tar.gz源码包并且解压

解压代码如下:

1. tar -zxvf mysql-5.7.25-el7-x86_64.tar.gz

2.2 创建mysql安装目录

在usr/local目录下创建mysql安装目录(这里的目录可以自己选择,任意位置都可以,推荐local目录,代码如下:)

1. mkdir  /usr/local/mysql

移动解压后的mysql文件到usr/local/mysql目录里

代码如下:(我在/usr/usrfiles下解压的)

 1. mv /usr/usrfiles/mysql-5.5.62-linux-glibc2.12-x86_64/*   /usr/local/mysql/

2.3 创建mysql数据/日志目录

创建mysql的data目录 ,

代码如下:

1. mkdir /usr/local/mysql/data

创建mysql的log目录 ,代码如下:

1. mkdir /usr/local/mysql/log

进入已经创建好的log目录,创建mysqld.log文件,代码如下:

1. touch /usr/local/mysql/log/mysqld.log

更改文件拥有者为mysql ,代码如下:

1. chown -R mysql /usr/local/mysql/  ###-R参数为递归的意思

更改文件所属用户组为mysql ,代码如下:

1. chgrp -R mysql /usr/local/mysql/

第三章:安装mysql

3.1 进入mysql安装目录,安装mysql

代码如下

1. /usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

安装这里会出现报错,但是没关系,忽略它的存在,报错原因:mysl5.7版本以后更改了源码安装方式中的mysql_install_db,但是经过我的测试,以前的方法还是可以用的

3.2 创建mysql配置文件

新建配置文件my.cnf,代码如下:

1. vi /etc/my.cnf           ###新建my.cnf
2. chown 777 /etc/my.cnf    ###赋予my.cnf这个文件777权限,777代表这个文件组用户,用户,其他用户都有权限

my.cnf配置文件内容如下:

    [mysqld]
    basedir=/usr/local/mysql/  ##这里为mysql安装目录
    datadir=/usr/local/mysql/data  ##这里为mysql的数据源目录
    socket=/tmp/mysql.sock
    user=mysql
    symbolic-links=0
    lower_case_table_names=1
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=innodb
    max_allowed_packet=16m
​
    [client]
    port=3306
​
    [mysqld_safe]
    log-error=/usr/local/mysql/log/mysqld.log

3.3 mysql设置环境变量

编辑/etc/profile文件 ,代码如下:

1. vi /etc/profile

添加代码

1. export MYSQL_HOME="/usr/local/mysql/"  ###这里为你的mysql安装目录
2. export PATH="$PATH:$MYSQL_HOME/bin"

使配置生效,代码如下:

1. source /etc/profile

3.4 设置Mysql为系统服务

进入/usr/lib/systemd/system目录,代码如下:

1. cd /usr/lib/systemd/system/

在LInux系统中,如果要把某项服务设置为系统服务,都在这个目录内新建相应的service文件

新建mysql.service系统服务文件,文件内容如下:

1. [Unit]   
2. Description=mysql
3. After=network.target remote-fs.target nss-lookup.target

4. [Service] 
5. Type=forking
6. ExecStart=/usr/local/mysql/support-files/mysql.server start     ##这里要换成自己安装mysql的目录
7. ExecReload=/usr/local/mysql/support-files/mysql.server restart  ##这里要换成自己安装mysql的目录
9. ExecStop=/usr/local/mysql/support-files/mysql.server stop      ##这里要换成自己安装mysql的目录
10.PrivateTmp=true

11.[Install]
12.WantedBy=multi-user.target

到此为止

我们已经成功把mysql加入到了系统服务中,可以很方便的管理mysql服务了!

代码如下:

1. 启动mysql服务
2. systemctl start mysql.service

3. 设置开机启动
4. systemctl enable mysql.service

5. 取消开机启动
6. systemctl disable mysql.service

7. 查看服务状态
8. systemctl status my.service

第四章 设置mysql常用配置

现在我们启动mysql,并设置一些常用的配置,具体步骤如下:

4.1 修改密码

获取初始密码,代码如下:

1. cat /root/.mysql_secret

修改密码,代码如下:

1. mysql  -uroot -p  ###登录mysql用刚才获取到的初始密码
2. mysql> set PASSWORD = PASSWORD('123456');  ###修改密码
3. mysql> flush privileges;    ###刷新权限

4.2 允许远程访问

代码如下:

温馨提示:需要在登录Mysql时才可执行允许远程访问的代码

1. mysql> create user 'root'@'%' identified by '123456';
2. mysql> flush privileges;    ###刷新权限

这句话的意思如下:

mysql> create user ‘你想要哪个用户可以远程访问’远程访问的ip’%’ identified by ‘你的数据库密码’;

mysql> create user ‘username’@‘host’ identified by ‘password’

username – 你将创建的用户名

host – 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,

如果想让该用户可以从任意远程主机登陆,可以使用通配符%

password –该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器建议别样做嗷

取消该用户的远程访问权限


取消授权远程访问操作如下:
1.mysql> use mysql;

2.mysql> revoke from 'root'@'%';

3.mysql> flush privileges;

这句话的意思如下:

mysql>revoke from ‘你想要移除远程权限的用户名’@’%’;

mysql> revoke from ‘username’@’%’;

username – 你将创建的用户名

host – 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,

通配符%,代表该用户拥有的权限

以上都是懒人做法,下面提供一份详细的

使用mysql命令进入mysql,mysql -uroot -p,然后输入密码。

授权远程访问操作如下三步:

1.use mysql;

//这里的两个星号,第一个代表任意数据库,第二个代表该数据库的任意表,
2.grant all privileges on *.* to 'root'@'%' identified by 'password';

3.flush privileges;

4.3 删除远程访问权限

取消授权远程访问操作如下:

1.use mysql;

2.revoke all privileges on *.* from 'root'@'%';

3.flush privileges;

删除远程访问用户的第二种办法

1. mysql -u root -p  //登录mysql
 
2. use mysql;      
 
3. select host,user from user; //查看用户命令

4. update user set host = "localhost" where user = "root" and host= "%";
   或者使用 delete from user where user="root" and host="%" ;

5. flush privileges;

4.4 关于mysql的用户的详细命令

新建用户

查看用户命令
select user, host from mysql.user;

创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
 
username:用户名;host:指定在哪个主机上可以登录,本机可用localhost,
%通配所有远程主机;password:用户登录密码;

-------------------------------------------------------------------------
添加远程访问权限

mysql数据库设置用户远程连接权限
grant all privileges on *.* to 'root'@'%' identified by '你的密码' with grant option;
-------------------------------------------------------------------------

创建数据库
CREATE DATABASE 库名;

授予用户在本地服务器对该数据库的全部权限
grant all privileges on dbname.* to zhrt@localhost identified by '123456';
 
 
设置用户testuser,只拥有【查询】操作权限;
grant select on *.* to testuser@localhost identified by "123456" WITH GRANT OPTION;

授予用户通过外网IP对于该数据库的全部权限
grant all privileges on dbname.* to 'zhrt'@'%' identified by '123456';

刷新权限
FLUSH PRIVILEGES;

关闭远程访问
如已有root用户使用localhost可设置为127.0.0.1
update user set host = "localhost" where user = "root" and host= "%";
或者
delete from user where user="root" and host="%" ;

退出mysql
exit;

关闭/启动/重启 mysql
service mysql stop
service mysql start
service mysql restart

查看当前用户: SELECT CURRENT_USER();

查看某个用户的权限:show grants for 'root'@'%'; 

撤销用户权限:
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
 

privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL

databasename:数据库名

tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*

设置完mysql需要重启服务

  • 2
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:精致技术 设计师:CSDN官方博客 返回首页

打赏作者

wudskq

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值