Linux 安装、卸载MySQL

12 篇文章 0 订阅

运行环境:CentOS 7.x
数据库版本:mysql.8.0.x
安装方式:二进制文件安装(tar包)

自动化安装脚本(推荐)

点击前往(一键安装,省时省力)


手动安装步骤如下

1.下载安装包

使用wget下载mysql-8.0.17二进制安装文件(tar包)并存放在指定目录下(也可以通过浏览器下载并上传到服务器),我这里放在/usr/local/src/目录下(自己喜欢即可)

[root@localhost ~]# cd /usr/local/src/
[root@localhost ~]# wget https://cdn.mysql.com//Downloads/mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz

在这里插入图片描述

2.创建用户和组

[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd mysql -r -g mysql
#验证用户组和用户
[root@localhost ~]# id mysql
uid=500 (mysql) gid=500 (mysql)=500 (mysql )

3.创建MySQL程序、数据存放及配置文件目录

在home目录下创建mysql目录

root@JD mysql]# mkdir mysql -p

进入mysql目录,然后依次创建如下目录:

root@JD mysql]# mkdir program data conf -p
root@JD data]# mkdir mysqldata2 -p
root@JD mysqldata2]# mkdir binlog innodb_log innodb_ts log mydata relaylog slowlog sock tmpdir undo -p

查看创建的目录

oot@JD mysql]# tree /home/mysql/

如果机器上没有tree命令,使用yum install tree -y 安装即可
在这里插入图片描述

4.解压二进制安装文件并设置目录权限

将tar包解压到上面创建的program目录下

[root@JD src]# tar -xvf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz -C /home/mysql/program/

更改目录权限

[root@JD mysql]# chown -R mysql.mysql /home/mysql

查看datadir关键目录的权限是否正确
在这里插入图片描述

5.软链接程序路径,并设置MySQL环境变量

把/home/mysql/program/mysql-8.0.17-linux-glibc2.12-x86_64路径软链接到MySQL默认的程序访问路径/usr/local/mysql下,并把/usr/local/mysql/bin/添加到系统环境变量中,以便使用mysql相关命令时不需要输入绝对路径

[root@JD mysql]# ln -s /home/mysql/program/mysql-8.0.17-linux-glibc2.12-x86_64 /usr/local/mysql

软连接之后,/usr/local/mysql目录的所有者和所属组一定记得改为mysql
在这里插入图片描述
查看basedir关键程序目录是否可用

root@JD mysql]# ll /usr/local/mysql/

在这里插入图片描述
设置环境变量

[root@JD mysql]# export PATH=$PATH:/usr/local/mysql/bin/
root@JD mysql]# echo 'export PATH=$PATH:/usr/local/mysql/bin/' >> /etc/profile

查看环境变量是否成功添加到/etc/profile中

[root@JD mysql]# tail -1 /etc/profile
export PATH=$PATH:/usr/local/mysql/bin/

6.配置my.cnf文件参数

my.cnf是MySQL的配置文件,其设置是多样化的,选择自己喜欢的方式即可;此处直接在/home/mysql/conf目录下创建my.cnf文件,并设置好相关系统参数的路径:socket、pid-file、datadir、tmpdir、log-error、slow_query_log_file、log-bin、relay-log、innodb_data_home_dir、innodb_log_group_home_dir、innodb_undo_directory;具体如下,复制即可:

[client]
socket=/home/mysql/data/mysqldata2/sock/mysql.sock

[mysqld]
user=mysql

basedir=/usr/local/mysql 
socket=/home/mysql/data/mysqldata2/sock/mysql.sock
pid-file=/home/mysql/data/mysqldata2/sock/mysql.pid
datadir=/home/mysql/data/mysqldata2/mydata
tmpdir=/home/mysql/data/mysqldata2/tmpdir
log-error=/home/mysql/data/mysqldata2/log/error.log
slow_query_log
slow_query_log_file=/home/mysql/data/mysqldata2/slowlog/slow-query.log
log-bin=/home/mysql/data/mysqldata2/binlog/mysql-bin
relay-log=/home/mysql/data/mysqldata2/relaylog/mysql-relay-bin
innodb_data_home_dir=/home/mysql/data/mysqldata2/innodb_ts
innodb_log_group_home_dir=/home/mysql/data/mysqldata2/innodb_log 
innodb_undo_directory=/home/mysql/data/mysqldata2/undo/

然后将my.cnf文件软连接到/etc/my.cnf(若/etc目录下已经有my.cnf文件,为了统一管理MySQL的安装资源,建议删除)

[root@JD src]# ln -s /home/mysql/conf/my.cnf /etc/my.cnf

软连接之后,/etc/my.cnf文件的所有者和所属组一定记得改为mysql,如下:

[root@JD src]# chown -R mysql.mysql /etc/my.cnf

在这里插入图片描述

7.初始化MySQL

[root@JD bin]# ./mysqld --defaults-file=/etc/my.cnf --initialize

参数initialize说明

在MySQL 5.7及后续版本中,直接使用bin/mysqld命令进程初始化,初始化有两个选项
initialize:使用该选项初始化时会在错误日志中写一个随机的root密码,初始化完成之后在错误日志中搜索password,紧跟其后的一串字符串就是这个随机密码(例如,“Atemporary password is generated for root@localhost: XRER<:les9p? ”这段文字中的粗体字部分就是随机密码),初始化完成并启动mysqld之后,初次登录需要使用这个随机密码
initialize-insecure:使用该选项初始化时不会产生随机密码,而是像MySQL 5.7之前的版本一样,初始化完成之后,第一次登录数据库使用空的root密码
初始化之后,错误日志error.log中就会有root用户的临时密码,第一次登录的时候需要使用此密码,记好哦

[root@JD bin]# cat /home/mysql/data/mysqldata2/log/error.log 
2020-05-10T06:03:55.248108Z 0 [System] [MY-013169] [Server] /home/mysql/program/mysql-8.0.17-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.17) initializing of server in progress as process 7326
2020-05-10T06:04:03.186896Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: xxxxxxxxxxxx
2020-05-10T06:04:06.798208Z 0 [System] [MY-013170] [Server] /home/mysql/program/mysql-8.0.17-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.17) initializing of server has completed

8.启动MySQL

将mysql.server文件复制到/etc/init.d/目录下,命名为mysqld程序,并使用这个脚本启动和停止MySQL

[root@JD home]# cp -ar /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

复制后,确保/etc/init.d/mysqld文件的所有者和所属组一定记得改为mysql
并且是可执行的
在这里插入图片描述
启动前须在目录/home/mysql/data/mysqldata2/log/下创建error.log空文件(vi error.log 然后保存退出即可),另外记得文件的所有者和所属组一定记得改为mysql
在这里插入图片描述
启动MySQL服务

[root@JD bin]# service mysqld start
Starting MySQL.... SUCCESS! 

查看服务情况

[root@JD bin]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp6       0      0 :::33060                :::*                    LISTEN      -                   
tcp6       0      0 :::3306                 :::*                    LISTEN      -

查看错误日志
#注意:日志中不能出现ERROR错误,看到输出版本号和socket信息就表示MySQL启动成功

[root@JD bin]# cat /home/mysql/data/mysqldata2/log/error.log 
2020-05-10T06:19:44.243771Z 0 [System] [MY-010931] [Server] /usr/local/mysql/bin/mysqld: ready for connections. Version: '8.0.17'  socket: '/home/mysql/data/mysqldata2/sock/mysql.sock'  port: 3306  MySQL Community Server - GPL.
2020-05-10T06:19:44.361931Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/tmp/mysqlx.sock' bind-address: '::' port: 33060

9.登录MySQL

进入目录/usr/local/mysql,输入如下命令,密码就是刚才初始化的时候在错误日志error.log里面生成的,输入,回车即可

[root@JD mysql]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.17 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

这时候MySQL不允许执行其他任何命令,必须修改root的临时密码,

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> select user();
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

输入如下sql语句执行,即可修改密码:

mysql> alter user 'root'@'localhost' identified by '自己设置的密码'
    -> ;
Query OK, 0 rows affected (0.48 sec)

这时候就可以愉快的使用MySQL了

mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.13 sec)

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.17    |
+-----------+
1 row in set (0.01 sec)

mysql> select user, host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
4 rows in set (0.46 sec)

10.创建用户并授权远程访问

创建用户

mysql> create user 'admin'@'%' identified by 'password';
Query OK, 0 rows affected (0.03 sec)
mysql> 

授权

mysql> grant all on *.* to 'admin'@'%'  with grant option;

说明:
在MySQL8.0版本以前,我们一般使用如下命令授权root远程连接

mysql> grant all on *.* to 'root'@'%'  with grant option;

但在8.0版本之后,使用以上命令会报错

mysql> ERROR 1410 (42000): You are not allowed to create a user with GRANT

原因是官方移除了相关命令,取而代之的是创建用户create user或者创建后修改alter user的方式,如

mysql> update mysql.user set mysql.user.host='%' where mysql.user.user='root';
Query OK, 1 row affected (0.19 sec)
Rows matched: 1  Changed: 1  Warnings: 0

查看授权

mysql> show grants;
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                                                                                                                                                                                                                                                                                                                |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`%` WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.04 sec)

然后就可以通过可视化工具进行远程连接了
在这里插入图片描述
若连接报错,一般是MySQL8.0版本的密码设置方式需要变更一下,执行如下命令

ALTER USER 'root'@'%' IDENTIFIED BY '自己的密码' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '自己的密码';

11.MySQL软件的删除

如果安装过程中出错,需要删除删除MySQL软件,那么也是比较简单的,按如下执行即可
关闭服务

[root@JD mysql]# service mysqld stop
Shutting down MySQL.. SUCCESS! 
[root@JD mysql]# service mysqld status
 ERROR! MySQL is not running

删除MySQL对应的文件夹

查找文件
[root@JD mysql]# find / -name mysql
/run/lock/subsys/mysql
/usr/local/mysql
/home/mysql
/home/mysql/data/mysqldata2/mydata/mysql
/home/mysql/program/mysql-8.0.17-linux-glibc2.12-x86_64/bin/mysql
/home/mysql/program/mysql-8.0.17-linux-glibc2.12-x86_64/include/mysql
[root@JD mysql]# 
一一删除相关文件
[root@JD mysql]# rm -rf /run/lock/subsys/mysql
......

删除用户组

[root@JD mysql]# userdel mysql
[root@JD mysql]# groupdel mysql
groupdel: group 'mysql' does not exist

删除软连接及初始化文件

[root@JD mysql]# rm -f /etc/my.cnf
[root@JD mysql]# rm -f /usr/local/mysql
[root@JD mysql]# rm -rf /etc/init.d/mysqld

结束~~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值