MySQL的Linux安装与连接

  在根据官方文档安装时,过程中仍然存在问题,现在问题解决,记录过程,希望也能帮助其他人。

  • 虚拟机映像文件:CentOS7
  • MySQL版本:mysql-8.0.20-linux-glibc2.12-x86_64

一.虚拟机网络设置

  为了远程连接虚拟机,我们必须获取ip,但是有时候ip被隐藏,无法查看。如下,没有显示ip。

  进行如下设置:

  1.虚拟机设置中,网络链接设置为NAT模式

  2.查看虚拟网络编辑器

(VM17 Pro版本好像才有这个东西),将以下选项勾选,NAT模式有一个虚拟机选择了就可以了。

  3.打开虚拟机网络配置器ui界面

在虚拟机中输入命令nmtui。

nmtui

打开后如下

进入Edit a connection,然后选择Edit。

在这个界面中,选择Automatically connect(通过键盘移动到此,单击空格勾选),之后ok,退出ui界面。

4.键入命令ip addr查看ip

成功显示

二.远程连接

  我采用FinalShell进行。主机填写刚刚查看到的IP地址。

连接成功后,在/usr/local目录下,上传MySQL压缩包。

三.安装MySQL

1.创建 mysql 用户和组

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

2.解压文件

cd /usr/local
tar xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz 

3.创建软连接

ln -s mysql-8.0.20-linux-glibc2.12-x86_64 mysql

4.添加目录变量

export PATH=$PATH:/usr/local/mysql/bin

四.安装后设置

1.为导入和导出操作创建安全目录

cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files

2.配置服务器启动选项

2.1创建MySQL配置文件

cd /etc
touch my.cnf
chown root:root my.cnf  
chmod 644 my.cnf

 2.2修改配置文件

vi my.cnf

里面内容进行修改 

[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/localhost.localdomain.err

2.3设置用户选项

确保 服务器以非特权用户帐户身份启动。出于安全原因, 重要的是要避免将服务器作为操作服务器运行 系统用户。mysqlroot 

user=mysql

2.4允许导入导出操作

secure_file_priv=/usr/local/mysql/mysql-files

2.5避免 LOAD DATA 版本的潜在安全问题

确保禁用local_infile, 默认情况下是这样。LOCAL

local_infile=OFF

 完成上述操作,my.cnf中应有如下内容

[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/localhost.localdomain.err
user=mysql
secure_file_priv=/usr/local/mysql/mysql-files
local_infile=OFF

3.初始化数据

3.1将位置更改为 MySQL 的顶级目录 安装、创建数据目录并授予所有权 给用户

cd /usr/local/mysql
mkdir data
chmod 750 data
chown mysql:mysql data

3.2初始化数据目录。

cd /usr/local/mysql
bin/mysqld --initialize --user=mysql

如果没有显示日志信息,使用下面命令查看日志信息

cat /usr/local/mysql/data/localhost.localdomain.err

4.启动MySQL服务器

cd /usr/lib/systemd/system
touch mysqld.service
chmod 644 mysqld.service

添加服务信息,将以下配置信息添加到文件中:mysqld.service,vi mysqld.service进入

[Unit]
Description=Mysql Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Service]
User=mysql
Group=mysql
PIDFile=/tmp/mysql.pid
#修改成mysql的启动文件及配置文件路径
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/etc/my.cnf

[Install]
WantedBy=multi-user.target

 启用服务以执行以下操作 重新启动时自动启动

systemctl enable mysqld.service

运行结果如下

文件重新加载

systemctl daemon-reload
# 重启服务
systemctl restart mysql.service

启动MySQL服务器

systemctl start mysqld

服务器状态查看

systemctl status mysqld

 

5.更改密码

5.1 登录mysql

cd /usr/local/mysql
bin/mysql -u root -p

 5.2 更改密码

进入MySQL内时执行

ALTER USER 'root'@'localhost' IDENTIFIED BY '此处填写修改的密码,单引号别去';

 成功执行

输入exit或者ctrl+D。退出Mysql

六.测试

1. 使用 mysqlshow 验证是否可以 从服务器检索信息。

cd /usr/local/mysql 
bin/mysqlshow -u root -p

2.使用 mysqladmin 查看 MySQL 服务器 版本信息。

bin/mysqladmin -u root -p version

可添加命令可执行文件路径至系统环境变量

vi ~/.bashrc

export PATH=$PATH:/usr/local/mysql/bin

七.时区更改 

首先查看时区,在mysql中执行

show variables like '%time_zone%';

此时时区为CST,并且使用系统时区设置。键入exit退出mysql。一般需将其改为中国时区比较保险:修改/etc/my.cnf。在mysqld组里面加一句:default-time_zone = '+8:00'

vi /etc/my.cnf

重启数据库:mysqld_safe --defaults-file=/usr/local/etc/my.cnf &

然后进入mysql,然后需要填写密码,填写已修改的密码

mysql -u root -p

查看当前时间

select now();

对于修改系统时区设置可以按照以下步骤

  1. 运行命令 timedatectl list-timezones 来列出可用的时区列表。这会显示出所有支持的时区列表。

  2. 选择想要设置的时区。将时区设置为"Asia/Shanghai"。

  3. 运行命令 timedatectl set-timezone Asia/Shanghai,将系统的时区设置为所选的时区。

  4. 验证时区设置是否已更改。可以运行 timedatectl 命令来检查系统的当前时区设置。

八.数据库连接 

 1.关闭防火墙

#关闭防火墙并设置开机不启动
systemctl stop firewalld
 
systemctl disable firewalld
 
#关闭SElinux安全模式
setenforce 0
    
#设置永久关闭selinux
vi /etc/selinux/config
 
#修改SELINUX:
SELINUX=disabled
 
#重启生效
reboot

2.远程权限授权

mysql默认权限仅本地,需要进行修改。进入MySQL中执行。将root账户的权限修改为%。

use mysql;
mysql> select user, host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | localhost         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)
update user set host = '%' where user = 'root' and host='localhost';
mysql> select user, host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+

# 授权
GRANT ALL ON *.* TO 'root'@'%';
# 刷权限
flush privileges;

3.数据库连接 

我采用DBeaver进行MySQL数据库的连接。左处空白右键创建连接,弹出的页面选择MySQL。服务器地址输入虚拟机ip地址。

 九.本地端口映射(八的补充)

这样操作可以让我们不使用虚拟机的ip地址,使用本机ip地址连接数据酷。

首先查看Windows的MySQL服务,需要禁用它,不然会和下面的操作占用3306端口。

Win+R打开命令行界面,输入services.msc,打开‘服务’界面,将MySQL80设置为禁用。

打开虚拟网络编辑器进行如下操作

  1. 仅需对NAT模式的虚拟机进行操作,点击NAT设置
  2. 来到页面2,点击添加
  3. 来到页面3,端口号都填3306,虚拟机IP使用一-4操作中查看到的虚拟机ip。
  4. 最后就可以用本地ip连接数据库了

十.情况补充

这三天我多次重装mysql,包括但不限于出现以下情况 。

1.mariadb.log文件缺失

创建文件并授予权限即可。

引用

mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
# 用户组及用户
chown -R mysql:mysql /var/log/mariadb/
/usr/local/mysql/support-files/mysql.server start

 执行后如下

注:此时可执行3.1.0,可看到自动生成的socket。

2.没有找到mysql.socket文件

显示没有在这个路径下找到socket。


通过命令查找socket在哪里

find / -name mysql.sock

#或者
find / -name *mysql.sock*

2.1如果查询有结果

建立软连接之后,再重新登录mysql

ln -s 查找到的地址 /tmp/mysql.socket

 2.2 如果查询没结果

  首先查看/etc/my.cnf,这里却显示mysql.sock,我顺着这个路径查看,却发现这个路径下没有这个文件,这代表mysql.sock没有自动生成。(进入脚本后,退出的话,先按 :,再按q,就可退出)

在我多方尝试(大家说的都有道理),虚拟机都试的打不开了,重装!遂解决问题。

vi /etc/my.cnf

3.身份验证有误

进入mysql命令界面,输入如下指令,我的是执行后报错了,但是也能连上了。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '设置的密码';

  • 36
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值