• Linux源码安装MySQL


    Linux源码安装MySQL

    第一步:环境检查

    1.1 查询系统自带的数据库

    代码如下:

    $ rpm -qa|grep mariadb
    
    • 1
    1.2 卸载系统自带的Mariadb

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

    代码如下:

    $ rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
    
    • 1
    1.3 删除默认配置文件

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

    $ rm /etc/my.cnf
    
    • 1
    1.4 检查mysql及用户组

    相关步骤代码如下:

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

    $ rpm -qa | grep mysql
    
    • 1

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

    # 检查mysql用户组
    $ cat /etc/group | grep mysql   
    # 检查mysql用户
    $ cat /etc/passwd | grep mysql  
    
    • 1
    • 2
    • 3
    • 4

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

    # 查询mysql用户组
    $ id mysql  
    # 删除
    $ userdel mysql   
    
    • 1
    • 2
    • 3
    • 4
    1.5 添加mysql用户组及用户
    # 添加mysql用户组
    $ groupadd mysql        
    # 添加mysql用户到mysql用户组
    $ useradd -g mysql mysql 
    
    • 1
    • 2
    • 3
    • 4

    第二章:下载源码并安装

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

    解压代码如下:

    $ tar -zxvf mysql-5.7.25-el7-x86_64.tar.gz
    
    • 1
    2.2 创建mysql安装目录

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

    $ mkdir /usr/local/mysql
    
    • 1

    移动解压后的mysql文件到usr/local/mysql目录里,代码如下

    # 我在/usr/usrfiles下解压的
    $ mv /usr/usrfiles/mysql-5.5.62-linux-glibc2.12-x86_64/*   /usr/local/mysql/
    
    • 1
    • 2
    2.3 创建mysql数据/日志目录

    创建mysql的data目录,代码如下

    $ mkdir /usr/local/mysql/data
    
    • 1

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

    $ mkdir /usr/local/mysql/log
    
    • 1

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

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

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

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

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

    $ chgrp -R mysql /usr/local/mysql/
    
    • 1

    第三章:安装mysql

    3.1 进入mysql安装目录,安装mysql,代码如下
    $ /usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
    
    • 1

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

    3.2 创建mysql配置文件

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

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

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

    [mysqld]
    ##这里为mysql安装目录
    basedir=/usr/local/mysql/  
    ##这里为mysql的数据源目录
    datadir=/usr/local/mysql/data  
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    3.3 mysql设置环境变量

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

    $ vi /etc/profile
    
    • 1

    添加代码

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

    使配置生效,代码如下:

    $ source /etc/profile
    
    • 1
    3.4 设置Mysql为系统服务

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

    $ cd /usr/lib/systemd/system/
    
    • 1

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

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

    [Unit]   
    Description=mysql
    After=network.target remote-fs.target nss-lookup.target
    
    [Service] 
    Type=forking
    # 这里要换成自己安装mysql的目录
    ExecStart=/usr/local/mysql/support-files/mysql.server start  
    # 这里要换成自己安装mysql的目录   
    ExecReload=/usr/local/mysql/support-files/mysql.server restart
    # 这里要换成自己安装mysql的目录  
    ExecStop=/usr/local/mysql/support-files/mysql.server stop       
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    到此为止

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

    刷新系统服务

    systemctl daemon-reload

    代码如下:

    启动mysql服务
    $ systemctl start mysql.service
    设置开机启动
    $ systemctl enable mysql.service
    取消开机启动
    $ systemctl disable mysql.service
    查看服务状态
    $ systemctl status mysql.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    第四章 设置mysql常用配置

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

    4.1 修改密码

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

    $ cat /root/.mysql_secret
    
    • 1

    修改密码,代码如下:

    $ mysql  -uroot -p                           # 登录mysql用刚才获取到的初始密码
    $ mysql> set PASSWORD = PASSWORD('123456');  # 修改密码
    $ mysql> flush privileges;                   # 刷新权限
    
    • 1
    • 2
    • 3
    4.2 允许远程访问

    代码如下:

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

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

    这句话的意思如下

    mysql> create user '你想要哪个用户可以远程访问'远程访问的ip'%' identified by '你的数据库密码';
    
    mysql> create user 'username'@'host' identified by 'password'
    
    username  – 你将创建的用户名
    
    host – 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,
    
    如果想让该用户可以从任意远程主机登陆,可以使用通配符% 
    
    password –该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

    # 取消授权远程访问操作如下:
    mysql> use mysql;
    
    mysql> revoke from 'root'@'%';
    
    mysql> flush privileges;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    mysql>revoke from '你想要移除远程权限的用户名'@'%';
    
    mysql> revoke from 'username'@'%';
    
    username  – 你将创建的用户名
    
    host – 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,
    通配符%,代表该用户拥有的权限
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

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

    $ use mysql;
    
    # 这里的两个星号,第一个代表任意数据库,第二个代表该数据库的任意表,
    $ grant all privileges on *.* to 'root'@'%' identified by 'password';
    
    $ flush privileges;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    4.3 删除远程访问权限

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

    $ use mysql;
    
    $ revoke all privileges on *.* from 'root'@'%';
    
    $ flush privileges;
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    mysql -u root -p  # 登录mysql
     
    use mysql;      
     
    select host,user from user; # 查看用户命令
    
    update user set host = "localhost" where user = "root" and host= "%";
    或者使用 delete from user where user="root" and host="%" ;
    
    flush privileges;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    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需要重启服务
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
  • 相关阅读:
    nginx详细安装教程
    c++ Primer 第九章:顺序容器 练习答案记录
    【JavaWeb】-- Servlet获取网页数据并传入到数据库
    【什么是闭包? 闭包产生的原因? 闭包有哪些表现形式?】
    docker入门加实战—docker安装并配置阿里云加速
    命令行工具部署达梦数据库 DMDPC(BP 多副本架构)
    IO作业:文件IO、fork,用父子进程拷贝一张图片,用文件IO实现,要求 子进程拷贝后半部分,父进程拷贝前半部分,按照cpu调度机制同时执行
    Windows/Linux(命令、安装包和源码安装)平台各个版本QT详细安装教程
    8-ROS中需要熟悉的YMAL语法摘要
    ConcurrentHashMap源码解析 1.内部结构
  • 原文地址:https://blog.csdn.net/csdn18740599042/article/details/107527225