建议看完文章再装,不一定适合所有。
一、根据自己的Linux去下载相对因的版本,一般都是红帽的。
下载地址;这个是官方文档,告诉你如何再Linux上安装mysql
二、开始安装
个人不太喜欢用yum安装,就是yum安装找不到路径,对于我这种半吊子,我还是喜欢 tar 的文件。
下载合适的版本
我这里下载的MySQL 8
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.20-el7-x86_64.tar.gz
解压缩
tar -xvf mysql-8.0.20-el7-x86_64.tar.gz
libaio 如果系统上尚不存在 该库,则可能需要安装该库
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm
rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm
添加用户组
groupadd mysql
useradd -g mysql mysql
解压后记得改文件名字,要不然源文件太长, 创建mysql 文件,并赋权
cd mysql8
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
查看一下文件的权限,使用命令 ll
drwxr-x---. 2 mysql mysql 25 Jul 16 13:56 mysql-files
drwxr-x---. 一共10个字符,下面讲解下:
- d 表示目录,如果是 - 表示是一个普通文件。剩余的9个字符,分成3组,每组3个字符,分别表示owner/group/others的rwx权限;
- owner 表示拥有者,可以看到拥有者是 mysql 用户
- group 表示组,除了mysql这个人的 同一个MySQL组拥有的权力
- others 就是其他人了,啥权限也没有。
初始化
[root@localhost mysql8]# cd bin/
[root@localhost bin]# ./mysqld --initialize --user=mysql
2020-07-16T05:41:18.862448Z 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.
2020-07-16T05:41:18.862588Z 0 [System] [MY-013169] [Server] /home/mysql8/bin/mysqld (mysqld 8.0.20) initializing of server in progress as process 86322
2020-07-16T05:41:18.887563Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-07-16T05:41:19.361487Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-07-16T05:41:20.490244Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: kI1F6zc4_oiG
[root@localhost bin]#
[root@localhost bin]# ./mysql_ssl_rsa_setup
[root@localhost bin]#
[root@localhost bin]# ./mysqld_safe --user=mysql &
[1] 86562
[root@localhost bin]# 2020-07-16T05:43:14.495984Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
[1]+ Exit 1 ./mysqld_safe --user=mysql
[root@localhost bin]#
报错,log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'. log-error 日志文件不存在,为用户mysql创建一个可操作的(可写的)。这句话意思不止是文件不存在,这个文件的权限还必须是 mysql 可操作才行。
我们可以找一下,哪里设置了这个日志的路径。
[root@localhost mysql8]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
[root@localhost mysql8]#
之前我们创建了一个 mysql-files 文件,我们把 my.cnf 的日志路径放到这里面,修改 my.cnf ,并在 mysql-files 下手动创建一个 mariadb.log。
[mysqld_safe]
log-error=/home/mysql8/mysql-files/mariadb.log
pid-file=/home/mysql8/mysql-files/mariadb.pid
重试
[root@localhost bin]# ./mysqld_safe --user=mysql &
[1] 88142
[root@localhost bin]# 2020-07-16T05:56:52.917143Z mysqld_safe Logging to '/home/mysql8/mysql-files/mariadb.log'.
2020-07-16T05:56:52.949548Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2020-07-16T05:56:53.495893Z mysqld_safe mysqld from pid file /home/mysql8/mysql-files/mariadb.pid ended
[1]+ Done ./mysqld_safe --user=mysql
[root@localhost bin]#
好,目前没看到报错信息。那我们去启动一下,mysql文件里有个support-files 文件,我们进这里面
[root@localhost support-files]# pwd
/home/mysql8/support-files
[root@localhost support-files]# ./mysql.server start
./mysql.server: line 239: my_print_defaults: command not found
./mysql.server: line 259: cd: /usr/local/mysql: No such file or directory
Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)
emmm..又报错了。为什么去这里找文件,哎。看到官方命令默认就是在 /usr/local 下进行的操作,那应该是有命令在初始化的时候可以指定才对,再找找。百度一番,两种形式:
- 在 初始化的时候填写 basedir
bin/mysqld --user=mysql --basedir=/usr/local/mysql-5.7.12 --datadir=/usr/local/mysql-5.7.12/data/ --initialize
- 在 my.cnf 配置 basedir
我将用第二种方式,为了防止在报错我还添加了 datadir,用于指定数据文件的地址。也可以是以上两种方式指定路径。
先创建 数据文件夹 用来存放数据的,记得给mysql权限
[root@localhost mysql8]# mkdir data
[root@localhost mysql8]# chown mysql:mysql data
drwxr-xr-x. 2 mysql mysql 6 Jul 16 14:12 data
data文件已经属于 mysql 组了,并且也是mysql 这个人创建的。ok 接下来修改 my.cnf 。
[mysqld]
basedir=/home/mysql8
datadir=/home/mysql8/data
尝试第二次启动
[root@localhost support-files]# ./mysql.server start
Starting MySQL. ERROR! The server quit without updating PID file (/home/mysql8/data/localhost.localdomain.pid).
哎....,查找了半天,问题终于解决了,是因为我给了 mysql-files 权限,但是咱们手动创建的 .log 文件没有mysql操作权限。
[root@localhost support-files]# ./mysql.server start
Starting MySQL.. SUCCESS!
进入mysql走一波
[root@localhost bin]# ./mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
我qnmlgb...,不能连接本地mysql服务,查看日志走。
2020-07-16T07:20:58.742741Z 310 [Warning] [MY-013360] [Server] Plugin sha256_password reported: ''sha256_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'
翻译最后一句就知道 请选择 caching_sha2_password 代替,mysql8的身份验证插件改了。
官方文档有写:

好吧修改一下:
[mysqld]
default_authentication_plugin=caching_sha2_password
basedir=/home/mysql8
datadir=/home/mysql8/data
经过重新初始化后...启动是成功了,日志也不报错了,但是..连接的时候
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
这个问题也需要改配置文件 my.cnf,但不需要重新初始化,如下:加一个[clinet] ,socket 的指向要和 [mysqld] 里的 socket 指向一致。
[client]
socket=/var/lib/mysql/mysql.sock
重新启动,然后连接数据库。
[root@localhost bin]# ./mysql -uroot -prK>g5XeUN(Bx
-bash: syntax error near unexpected token `('
你哭的心都有了是不是...,修改my.cnf
[mysqld]
skip-grant-tables
在重启,终于成功了。
三、远程连接
接下来就是添加一个用户,然后该用户可以远程访问mysql。以下的所有报错我就不在说了,只告诉正确的操作,执行问之后大家就可以连接了。
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> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> create user 'dev'@'%' identified by 'mysql@dev.2020';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to 'dev'@'%';
Query OK, 0 rows affected (0.00 sec)
修改密码规则,要不然我们的工具是连接不上的。
mysql> ALTER USER 'dev'@'%' IDENTIFIED BY 'mysql@dev.2020' PASSWORD expire never;
Query OK, 0 rows affected (0.01 sec)
修改密码
mysql> ALTER USER 'dev'@'%' IDENTIFIED WITH mysql_native_password BY 'mysql@dev.2020';
Query OK, 0 rows affected (0.00 sec)
修改 root 密码,不要忘记
alter user 'root'@'localhost' identified by 'Root@123456';
刷新
mysql> flush privileges;
Query OK, 0 rows affected (0.05 sec)
总结
装 mysql 一定要有耐心,建议看完以后再去安装。
网友评论