安装前准备

一 安装前准备

1、检查是否已经安装过mysql,执行命令

  1. [root@localhost /]# rpm -qa | grep mysql

从执行结果,可以看出我们已经安装了mysql-libs-5.1.73-5.el6_6.x86_64,执行删除命令

  1. [root@localhost /]# rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64

再次执行查询命令,查看是否删除

  1. [root@localhost /]# rpm -qa | grep mysql

2、查询所有Mysql对应的文件夹

  1. [root@localhost /]# whereis mysql
  2. mysql: /usr/bin/mysql /usr/include/mysql
  3. [root@localhost lib]# find / -name mysql
  4. /data/mysql
  5. /data/mysql/mysql

删除相关目录或文件

  1. [root@localhost /]# rm -rf /usr/bin/mysql /usr/include/mysql /data/mysql /data/mysql/mysql

验证是否删除完毕

  1. [root@localhost /]# whereis mysql
  2. mysql:
  3. [root@localhost /]# find / -name mysql
  4. [root@localhost /]#

3、检查mysql用户组和用户是否存在,如果没有,则创建

  1. [root@localhost /]# cat /etc/group | grep mysql
  2. [root@localhost /]# cat /etc/passwd |grep mysql
  3. [root@localhost /]# groupadd mysql
  4. [root@localhost /]# useradd -r -g mysql mysql
  5. [root@localhost /]#

4、从官网下载是用于Linux的Mysql安装包

下载命令:

  1. [root@localhost /]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

也可以直接到 mysql官网 选择对应版本进行下载。
4773465-f52b958c387d107c.webp

下载安装包
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz

Linux下安装mysql8.0.20 - 图2

解压

xz -d mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.12-linux-glibc2.12-x86_64.tar

二 安装Mysql

1、在执行wget命令的目录下或你的上传目录下找到Mysql安装包:mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

执行解压命令:

  1. [root@localhost /]# tar xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

解压完成后,可以看到当前目录下多了一个解压文件,移动该文件到/usr/local/下,并将文件夹名称修改为mysql

如果/usr/local/下已经存在mysql,请将已存在mysql文件修改为其他名称,否则后续步骤可能无法正确进行。

执行命令如下:

  1. [root@localhost /]# mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/
  2. [root@localhost /]# cd /usr/local/
  3. [root@localhost /]# mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql

如果/usr/local/下不存在mysql文件夹,直接执行如下命令,也可达到上述效果。

  1. [root@localhost /]# mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql

2、在/usr/local/mysql目录下创建data目录

  1. [root@localhost /]# mkdir /usr/local/mysql/data

3、更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限

  1. [root@localhost /]# chown -R mysql:mysql /usr/local/mysql
  2. [root@localhost /]# chmod -R 755 /usr/local/mysql

4、编译安装并初始化mysql,务必记住初始化输出日志末尾的密码(数据库管理员临时密码)

  1. [root@localhost /]# cd /usr/local/mysql/bin
  2. [root@localhost bin]# ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

补充说明:

第4步时,可能会出现错误: 4773465-f61d450c92002962.webp 出现该问题首先检查该链接库文件有没有安装使用 命令进行核查

  1. [root@localhost bin]# rpm -qa|grep libaio
  2. [root@localhost bin]#

运行命令后发现系统中无该链接库文件

  1. [root@localhost bin]# yum install libaio-devel.x86_64

安装成功后,继续运行数据库的初始化命令,此时可能会出现如下错误: 4773465-1285a491ff73632f.webp 执行如下命令后:

  1. [root@localhost bin]# yum -y install numactl

执行无误之后,再重新执行第4步初始化命令,无误之后再进行第5步操作!

5、运行初始化命令成功后,输出日志如下:

4773465-b193851d538e83c7.webp
记录日志最末尾位置root@localhost:后的字符串,此字符串为mysql管理员临时登录密码。

6、编辑配置文件my.cnf,添加配置如下

  1. [root@localhost bin]# vi /etc/my.cnf
  2. [mysqld]
  3. # Remove leading # and set to the amount of RAM for the most important data
  4. # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
  5. # innodb_buffer_pool_size = 128M
  6. # Remove leading # to turn on a very important data integrity option: logging
  7. # changes to the binary log between backups.
  8. # log_bin
  9. # These are commonly set, remove the # and set as required.
  10. basedir = /usr/local/mysql
  11. datadir = /usr/local/mysql/data
  12. socket = /tmp/mysql.sock
  13. log-error = /usr/local/mysql/data/error.log
  14. pid-file = /usr/local/mysql/data/mysql.pid
  15. port = 3306
  16. #lower_case_table_names = 1
  17. # server_id = .....
  18. # socket = .....
  19. #lower_case_table_names = 1
  20. max_allowed_packet=32M
  21. default-authentication-plugin = mysql_native_password
  22. #lower_case_file_system = on
  23. #lower_case_table_names = 1
  24. log_bin_trust_function_creators = ON
  25. # Remove leading # to set options mainly useful for reporting servers.
  26. # The server defaults are faster for transactions and fast SELECTs.
  27. # Adjust sizes as needed, experiment to find the optimal values.
  28. # join_buffer_size = 128M
  29. # sort_buffer_size = 2M
  30. # read_rnd_buffer_size = 2M
  31. sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

lower_case_table_names:是否区分大小写,1表示存储时表名为小写,操作时不区分大小写;0表示区分大小写;不能动态设置,修改后,必须重启才能生效:
character_set_server:设置数据库默认字符集,如果不设置默认为latin1
innodb_file_per_table:是否将每个表的数据单独存储,1表示单独存储;0表示关闭独立表空间,可以通过查看数据目录,查看文件结构的区别;

7、测试启动mysql服务器

  1. [root@localhost /]# /usr/local/mysql/support-files/mysql.server start

显示如下结果,说明数据库安装并可以正常启动
4773465-f25f02b9deefad0d.webp

8、

  1. [root@localhost /]# ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
  2. [root@localhost /]# ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
  3. [root@localhost /]# ln -s /usr/local/mysql/bin/mysqldump /usr/bin/mysqldump
  4. [root@localhost /]# service mysql restart

7. 登陆,修改密码

密码:第4步初始化数据库随机生成得密码,输入密码不显示。

  1. [root@VM_0_3_centos support-files]# service mysql start
  2. Starting MySQL.. SUCCESS!
  3. [root@VM_0_3_centos support-files]# mysql -uroot -p
  4. Enter password:
  5. Welcome to the MySQL monitor. Commands end with ; or \g.
  6. Your MySQL connection id is 82
  7. Server version: 8.0.20
  8. Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
  9. Oracle is a registered trademark of Oracle Corporation and/or its
  10. affiliates. Other names may be trademarks of their respective
  11. owners.
  12. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  13. mysql> alter user 'root'@'localhost' identified by 'kid+1412';
  14. Query OK, 0 rows affected (0.01 sec)
  15. mysql>

Linux下安装mysql8.0.20 - 图7

8. 开启Navicat远程连接

  1. # 登录
  2. [root@VM_0_3_centos support-files]# mysql -uroot -p
  3. Enter password:
  4. Welcome to the MySQL monitor. Commands end with ; or \g.
  5. Your MySQL connection id is 2582
  6. Server version: 8.0.20 MySQL Community Server - GPL
  7. Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
  8. Oracle is a registered trademark of Oracle Corporation and/or its
  9. affiliates. Other names may be trademarks of their respective
  10. owners.
  11. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  12. # 选择mysql数据库
  13. mysql> use mysql
  14. Reading table information for completion of table and column names
  15. You can turn off this feature to get a quicker startup with -A
  16. Database changed
  17. # 查看用户信息
  18. mysql> select host, user, authentication_string, plugin from user;
  19. +-----------+------------------+------------------------------------------------------------------------+-----------------------+
  20. | host | user | authentication_string | plugin |
  21. +-----------+------------------+------------------------------------------------------------------------+-----------------------+
  22. | localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
  23. | localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
  24. | localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
  25. | localhost | root | $A$005$=!..iRO=k:x_>qiFtXTYJmwgur/2pJH1mfk26FBL.1YZOC.YcBw8auuFFM0 | caching_sha2_password |
  26. +-----------+------------------+------------------------------------------------------------------------+-----------------------+
  27. 4 rows in set (0.00 sec)
  28. # 更新root信息
  29. mysql> update user set host = '%' where user = 'root';
  30. Query OK, 1 row affected (0.02 sec)
  31. Rows matched: 1 Changed: 1 Warnings: 0
  32. # 授权root用户可以远程登陆,失败
  33. mysql> GRANT ALL ON *.* TO 'root'@'%';
  34. ERROR 1410 (42000): You are not allowed to create a user with GRANT
  35. # 立即生效,重新授权
  36. mysql> flush privileges;
  37. Query OK, 0 rows affected (0.02 sec)
  38. # 授权root用户可以远程登陆
  39. mysql> GRANT ALL ON *.* TO 'root'@'%';
  40. Query OK, 0 rows affected (0.02 sec)
  41. # 立即生效
  42. mysql> flush privileges;
  43. Query OK, 0 rows affected (0.01 sec)
  44. #
  45. mysql> alter user 'root'@'%' identified with mysql_native_password by 'kid+1412';
  46. Query OK, 0 rows affected (0.01 sec)
  47. # 立即生效
  48. mysql> flush privileges;
  49. Query OK, 0 rows affected (0.00 sec)
  50. # 退出
  51. mysql> exit

9.navicat连接成功

Linux下安装mysql8.0.20 - 图8

定时备份

  1. #!/bin/bash
  2. #保存备份个数,备份31天数据
  3. number=31
  4. #备份保存路径
  5. backup_dir=/app/databack/database
  6. #日期
  7. dd=`date +%Y-%m-%d-%H-%M-%S`
  8. #备份工具
  9. tool=mysqldump
  10. #用户名
  11. username=root
  12. #密码
  13. password=123456
  14. #将要备份的数据库
  15. database_name=ry
  16. #如果文件夹不存在则创建
  17. if [ ! -d $backup_dir ];
  18. then
  19. mkdir -p $backup_dir;
  20. fi
  21. #简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
  22. $tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql
  23. #写创建备份日志
  24. echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt
  25. #找出需要删除的备份
  26. delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`
  27. #判断现在的备份数量是否大于$number
  28. count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`
  29. if [ $count -gt $number ]
  30. then
  31. #删除最早生成的备份,只保留number数量的备份
  32. rm $delfile
  33. #写删除文件日志
  34. echo "delete $delfile" >> $backup_dir/log.txt
  35. fi

启动 定时任务
image.png
查看定时任务

  1. crondtab -l

编辑定时任务

  1. crontab -u root -e

输入:

  1. 00 03 * * * /app/databack/mysql_back.sh
  2. :wq