一、下载https://dev.mysql.com/downloads/mysql/
二、解压,并创建data文件夹
[root@PTLHSJT1 soft]# tar -xvf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
[root@PTLHSJT1 soft]# mv mysql-8.0.28-linux-glibc2.12-x86_64 /app/mysql8
[root@PTLHSJT1 app]# cd mysql8/
[root@PTLHSJT1 mysql8]# mkdir data
三、第三步 创建用户组以及用户和密码 并授权
[root@PTLHSJT1 mysql8]# groupadd mysql
[root@PTLHSJT1 mysql8]# useradd -g mysql mysql
[root@PTLHSJT1 mysql8]# chown -R mysql:mysql /app/mysql8/
四、初始化基础信息
初始化基础信息 切记切记切记mysql8 一定要在初始化时设置 不区分大小写,不然后续修改和删除重装没区别
初始化后在原始my.con 下lower_case_table_names = 1 是无效的,所以一定要在初始化时加上 --lower-case-table-names=1
[root@PTLHSJT1 bin]# ./mysqld --user=mysql --basedir=/app/mysql8 --datadir=/app/mysql8/data/ --initialize --lower-case-table-names=1
2022-03-30T06:58:05.127338Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2022-03-30T06:58:05.127434Z 0 [System] [MY-013169] [Server] /app/mysql8/bin/mysqld (mysqld 8.0.28) initializing of server in progress as process 14069
2022-03-30T06:58:05.136008Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-03-30T06:58:05.875919Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-03-30T06:58:08.325808Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: %mo%*0ebwmR5
[root@PTLHSJT1 bin]#
得到系统初始化随机默认密码,此处得记录下密码,后续操作需要
五、编辑my.cnf文件
[root@PTLHSJT1 bin]# vi /etc/my.cnf
[mysqld]
#设置mysql的安装目录
basedir=/app/mysql8
#设置mysql数据库的数据的存放目录
datadir=/app/mysql8/data
socket=/var/lib/mysql/mysql.sock
user=mysql
#设置是否区分大小写(初始化后此参数在这里也必须存在)
lower_case_table_names=1
#设置客户端默认字符集
character-set-server=UTF8MB4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#注释mysqld_safe 下的所有配置 系统会输出到 datadir目录下
#[mysqld_safe]
#log-error=/var/log/mysqld.log
#pid-file=/var/run/mysqld/mysqld.pid
六、添加mysqld服务到系统 授权以及添加服务
[root@PTLHSJT1 mysql8]# cp -a ./support-files/mysql.server /etc/init.d/mysql
[root@PTLHSJT1 mysql8]# chmod +x /etc/init.d/mysql
[root@PTLHSJT1 mysql8]# chkconfig --add mysql
七、启动服务
[root@PTLHSJT1 mysql8]# service mysql start
Starting MySQL.Logging to '/app/mysql8/data/PTLHSJT1.err'.
[确定]
[root@PTLHSJT1 mysql8]# service mysql status
MySQL running (14388) [确定]
[root@PTLHSJT1 mysql8]#
八、将mysql命令添加到服务
[root@PTLHSJT1 mysql8]# ln -s /app/mysql8/bin/mysql /usr/bin
[root@PTLHSJT1 mysql8]# ls -l /usr/bin/mysql
lrwxrwxrwx 1 root 21 3月 30 15:15 /usr/bin/mysql -> /app/mysql8/bin/mysql
九、登陆数据库
[root@PTLHSJT1 mysql8]# mysql -uroot -h 127.0.0.1 -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.28
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
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> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> flush privileges;
十一、配置外网连接授权,此处 % 开启所有ip访问
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';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
错误:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
出现问题原因:
有可能是 my.cnf 配置文件中设置了 [mysqld] 的参数 socket ,而没有设置[client]的参数socket
`mysql 支持 socket 和 TCP/IP 连接。那么 mysql.sock 这个文件有什么用呢?连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。/tmp 文件夹属于临时文件,随时可能被删除。
1.TCP 连接(如果报错 /tmp/mysql.sock,你可以尝试这种方式连接)
mysql -uroot -h 127.0.0.1 -p
2.socket 连接
mysql -uroot -p
解决方式:
添加 [client] 配置项,如下所示
配置前:(配置 [client] 前,会报错'/tmp/mysql.sock' (2))
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
配置后:(配置 [client] 后,重启 mysql服务)
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/var/lib/mysql/mysql.sock(跟这个socket路径一样)
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
port=3306
socket=/var/lib/mysql/mysql.sock