1.检查系统中是否自带mariadb
[root@iZ8vb4kqbeb43cx7m9xnj4Z ~]# rpm -qa | grep mariadb mariadb-libs-5.5.68-1.el7.x86_64
2.卸载系统自带的mariadb并检查是否成功
[root@iZ8vb4kqbeb43cx7m9xnj4Z ~]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 [root@iZ8vb4kqbeb43cx7m9xnj4Z ~]# rpm -qa | grep mariadb [root@iZ8vb4kqbeb43cx7m9xnj4Z ~]#
3.检查是否安装libaio(使用Libaio 可以让 Mysql 数据库在 I/O 操作中实现异步读写,从而提高查询效率和性能)
[root@iZ8vb4kqbeb43cx7m9xnj4Z ~]# yum list installed | grep libaio [root@iZ8vb4kqbeb43cx7m9xnj4Z ~]#
如上所示:未查询到安装libaio
4.执行安装libaio
[root@iZ8vb4kqbeb43cx7m9xnj4Z ~]# yum install -y libaio
等待安装完成
Installed: libaio.x86_64 0:0.3.109-13.el7 Complete! [root@iZ8vb4kqbeb43cx7m9xnj4Z ~]#
5.我选择手动离线安装(mysql下载地址MySQL :: Download MySQL Community Server (Archived Versions))
下载前,请确认ldd 版本
[root@iZ8vb4kqbeb43cx7m9xnj4Z ~]# ldd --version ldd (GNU libc) 2.17 Copyright (C) 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Roland McGrath and Ulrich Drepper.
下载glibc2.17版本对应的数据库。
6.下载好后通过工具上传到服务器上(我这放置的路径是/usr/local)
7.通过下面的命令解压tar -Jvxf,为了方便,对解压后的文件夹进行了重命名mysql80
[root@iZ8vb4kqbeb43cx7m9xnj4Z local]# pwd /usr/local [root@iZ8vb4kqbeb43cx7m9xnj4Z local]# ls aegis bin etc games include lib lib64 libexec mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz sbin share src [root@iZ8vb4kqbeb43cx7m9xnj4Z local]# tar -Jvxf mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz ######查看文件并通过mv命令进行重名名 [root@iZ8vb4kqbeb43cx7m9xnj4Z local]# ls aegis etc include lib64 mysql-8.0.35-linux-glibc2.17-x86_64 sbin src bin games lib libexec mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz share [root@iZ8vb4kqbeb43cx7m9xnj4Z local]# mv mysql-8.0.35-linux-glibc2.17-x86_64 mysql80 [root@iZ8vb4kqbeb43cx7m9xnj4Z local]# ls aegis bin etc games include lib lib64 libexec mysql80 mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz sbin share src [root@iZ8vb4kqbeb43cx7m9xnj4Z local]#
8.配置环境变量,并重新加载系统环境变量文件,查看是否安装成功
[root@iZ8vb4kqbeb43cx7m9xnj4Z local]# echo "export PATH=$PATH:/usr/local/mysql80/bin" >>/etc/profile [root@iZ8vb4kqbeb43cx7m9xnj4Z local]# source /etc/profile [root@iZ8vb4kqbeb43cx7m9xnj4Z local]# mysql --version mysql Ver 8.0.35 for Linux on x86_64 (MySQL Community Server - GPL)
9.创建数据目录与日志目录,并查看是否创建成功,同时创建用户组并赋权
[root@iZ8vb4kqbeb43cx7m9xnj4Z local]# mkdir -p /data/mysql80/datas [root@iZ8vb4kqbeb43cx7m9xnj4Z local]# mkdir -p /data/mysql80/logs [root@iZ8vb4kqbeb43cx7m9xnj4Z mysql80]# pwd /data/mysql80 [root@iZ8vb4kqbeb43cx7m9xnj4Z mysql80]# ls datas logs groupadd mysql # 创建用户组mysql useradd -r -g mysql jonmax # 创建用户jonmax(-r 创建系统用户 -g 分组) chown -R jonmax:mysql /data/mysql80 chmod -R 750 /data/mysql80/datas chmod -R 750 /data/mysql80/logs
10.创建/编辑修改,配置文件my.cnf,若没有此文件,vim命令会默认创建
vim /etc/my.cnf
my.cnf 配置如下:
[mysql] default-character-set=utf8mb4 [client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 server-id = 1 socket = /tmp/mysql.sock # 安装目录 basedir = /usr/local/mysql80 # 数据存放目录 datadir = /data/mysql80/datas/mysql log-bin = /data/mysql80/datas/mysql/mysql-bin innodb_data_home_dir =/data/mysql80/datas/mysql innodb_log_group_home_dir =/data/mysql80/datas/mysql #日志及进程数据的存放目录 log-error =/data/mysql80/logs/mysql.log pid-file =/data/mysql80/logs/mysql.pid # 服务端使用的字符集默认为8比特编码 character-set-server=utf8mb4 lower_case_table_names=1 collation-server=utf8mb4_general_ci init_connect='SET default_collation_for_utf8mb4=utf8mb4_general_ci' sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION lower_case_table_names=1 performance_schema=off table_open_cache=128 transaction_isolation=READ-COMMITTED max_connections=1000 max_connect_errors=6000 max_allowed_packet=64M innodb_file_per_table=1 innodb_buffer_pool_size=512M innodb_flush_method=O_DIRECT innodb_lock_wait_timeout=1800 expire_logs_days = 2 binlog_format=mixed character-set-client-handshake = FALSE
11.初始化mysql
[root@iZ8vb4kqbeb43cx7m9xnj4Z mysql80]# mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql80 --datadir=/data/mysql80/datas/mysql --user=root --initialize-insecure [root@iZ8vb4kqbeb43cx7m9xnj4Z mysql80]#
-
--defaults-file: 指定配置文件 (放在--initialize-insecure前)
-
--user: 指定用户
-
--basedir: 指定安装目录
-
--datadir: 指定初始化数据目录
-
--initialize-insecure: 初始化不设置密码,随机生成密码,需在 /data/mysql80/logs/mysql.log 查看
12.启动mysql
[root@iZ8vb4kqbeb43cx7m9xnj4Z ~]# su jonmax bash-4.2$ bash-4.2$ bash-4.2$ bash-4.2$ mysqld_safe --defaults-file=/etc/my.cnf & [2] 2638 [root@iZ8vb4kqbeb43cx7m9xnj4Z bin]# ps -ef | grep mysql root 1175 1075 7 16:48 pts/0 00:00:00 ./mysqld --skip-grant-tables --skip-networking --user=root root 1222 1075 0 16:48 pts/0 00:00:00 grep --color=auto mysql [root@iZ8vb4kqbeb43cx7m9xnj4Z bin]#
13.登录mysql~修改密码和用户远程登录
[root@iZ8vb4kqbeb43cx7m9xnj4Z bin]# mysql -uroot mysql> alter user 'root'@'localhost' identified by '123456'; ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement mysql> flush privileges; Query OK, 0 rows affected (0.02 sec) mysql> alter user 'root'@'localhost' identified by '123456'; Query OK, 0 rows affected (0.01 sec) mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> update user set host='%' where user='root';#修改root 用户可以远程访问 Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select user,host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | root | % | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | +------------------+-----------+ 4 rows in set (0.00 sec) mysql> flush privileges;#刷新权限 mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; #赋权 Query OK, 0 rows affected (0.01 sec) mysql> FLUSH PRIVILEGES;#刷新权限 Query OK, 0 rows affected (0.00 sec)
14.开启3306端口重启防火墙
[root@iZ8vb4kqbeb43cx7m9xnj4Z bin]#firewall-cmd --add-port=3306/tcp --permanent [root@iZ8vb4kqbeb43cx7m9xnj4Z bin]# systemctl restart firewalld
注:阿里云需要再控制台开发3306端口
15.开机自动启动-我失败了,不知道什么原因,不想研究了
[root@iZ8vb4kqbeb43cx7m9xnj4Z bin]# cp /usr/local/mysql80/support-files/mysql.server /etc/rc.d/init.d/mysqld [root@iZ8vb4kqbeb43cx7m9xnj4Z bin]# chmod +x /etc/init.d/mysqld [root@iZ8vb4kqbeb43cx7m9xnj4Z bin]# chkconfig --add mysqld