利用Linux学习MySQL

引言

使用 Linux 进行 MySQL 的学习。

首先来看两个指令,这两个是用来查 Linux 版本的。

lsb_release -a # 这个非常之详细,有发行版的信息
uname -a # 这个就只会显示内核信息

Linux与MySQL-1.png

今天用 ssh 登陆的时候突然连接不到香橙派了,最后是用网线才解决问题。

或许是因为路由器每天重启的原因。

安装 MySQL

首先,先要更新包列表,每次安装什么新的东西都要操作一次

sudo apt-get update

然后就直接安装 MySQL 的服务器了

sudo apt-get install mysql-server

可以查一下 MySQL 的版本,看看是 5.7 还是 8.0

mysql --version

Linux与MySQL-2.png

这里可以看到是 8.0。

我们也可以看看这个 mysql 是安在哪里了

which mysql

Linux与MySQL-3.png

apt-get 的作用以及常见命令

apt-get 是 Debian 和 Ubuntu 等基于 Debian 的 Linux 发行版中的一个命令行工具,用于处理包。

这个工具可以用来安装、升级或删除软件包。

以下是一些常用的 apt-get 命令:

  • sudo apt-get update:更新你的包列表。这将获取最新的软件包版本信息,但不会安装或升级任何软件包。
  • sudo apt-get upgrade:升级所有已安装的软件包到最新版本。
  • sudo apt-get install <package>:安装一个软件包。你需要将 <package> 替换为你想要安装的软件包的名称。
  • sudo apt-get remove <package>:删除一个软件包。你需要将 <package> 替换为你想要删除的软件包的名称。
  • sudo apt-get autoremove:删除所有不再需要的软件包。这通常用来清理那些被安装为其他软件包的依赖,但现在不再需要的软件包。
  • sudo apt-get dist-upgrade:升级系统到新的发行版。

这些命令可以帮助管理 Linux 系统,保持软件包的最新状态。

使用 MySQL

第一步是创建用户,不过这个 root 用户应该一开始就已经有了,这里只是给这个 root 用户设置一下初始的密码。(这一步还是在 linux 的 shell 中进行)

mysql -u root -p

输入这行指令之后,让你输入密码,同样是不显示位数的,什么都没有。

然后就可以开始使用了。

SHOW DATABASES;

先显示一下所有的数据库,注意是 databases 后面是有个 s 的,还有得加个

Linux与MySQL-4.png

除了 soleilbase 是我创建的,其他的都是 MySQL 自带的,都是有用的。

  • information_schema 是 MySQL 中的一个特殊数据库,它提供了关于 MySQL 服务器的元数据,包括数据库的信息、表的信息、列的信息、权限的信息等等。这些信息以表的形式存储,你可以像查询普通的表一样查询这些信息。
  • mysql 是 MySQL 中的一个系统数据库,它存储了 MySQL 服务器的元数据,包括用户账户信息、权限信息、系统配置等等。
    以下是 mysql 数据库中一些重要的表:
    • user:存储了用户账户信息,包括用户名、密码、权限等等。
    • db:存储了数据库级别的权限信息。
    • tables_priv:存储了表级别的权限信息。
    • columns_priv:存储了列级别的权限信息。
    • procs_priv:存储了存储过程和函数的权限信息。
    • time_zone*:存储了时区信息。
  • performance_schema 数据库是虚拟的,它的数据并不存储在磁盘上,而是在查询时动态生成。因此,你不会在文件系统中找到 performance_schema 数据库的数据文件。
  • sys 是 MySQL 中的一个特殊数据库,它提供了一组视图、函数和过程,用于帮助数据库管理员更好地理解和优化 MySQL 服务器的性能。sys 数据库中的对象是基于 performance_schemainformation_schema 数据库的数据创建的,它们提供了一种更易于理解和使用的方式来访问这些数据例如,sys 数据库中的 schema_tables_with_full_table_scans 视图可以帮助你找出那些经常进行全表扫描的表,这可能是性能问题的一个指标。

创建一个数据库

CREATE DATABASE sqlTest;

注意,linux 上的 mysql 是区分大小写的,但是 win 上面的是不区分的都是小写,但是如果你 linux 上以及区分大小写了,你用 win 连接这个 linux 上的数据库,那么 win 上面也就区分大小写了。

使用这个新建的数据库

use sqlTest; -- 注意大小写了

至于说其他的操作,就请期待我的数据库的内容了。

更改 MySQL 用户验证方式

接下来你如果切换为其他用户,不是 root 用户,可能无法登录 MySQL 的 root 用户,这是因为 MySQL 默认的 root 用户使用了 auth_socket 插件进行身份验证,这意味着只有系统的 root 用户才能以 MySQL 的 root 用户身份登录。

先切换为 linux 的 root 用户。

然后登录 MySQL 的 root 用户。

su root
mysql -u root -p

登录进去后更改 root 用户的验证方式

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; -- By包括后面可以不要,就是不用改密码了,有的话可以更改密码

最后刷新下权限(可有可无)

FLUSH PRIVILEGES;

恢复的话就更改第二步的内容

ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;

新建 MySQL 用户

第一步还是要用 mysql 的 root 用户登录。

之后在 MySQL 提示符下,使用 CREATE USER 命令创建新用户

CREATE USER 'username'@'%' IDENTIFIED BY 'password';
  • 'username' 是用户的名称,它可以是任何有效的标识符。在 MySQL 中,标识符可以包含字母、数字、下划线、美元符号等字符,但不能包含空格、点、破折号等特殊字符。标识符的长度不能超过 32 个字符。
  • '%' 是主机名,它指定了用户可以从哪些主机连接到 MySQL 服务器。'%' 表示任何主机,也就是说,用户可以从任何 IP 地址连接到 MySQL 服务器。你也可以指定一个具体的 IP 地址或主机名,例如 '192.168.1.1''localhost'。你也可以给个名字 Soleil 这就要求连接到 MySQL 服务器的主机名字要叫 Soleil。如果主机不符合@后面规定的要求,那就没法连接。
  • password 为你想设置的密码,注意千万别忘记

最后,你需要给新用户分配权限。你可以使用 GRANT 命令来做这个。
这里我们要给我们的新用户赋予全部的权限。

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
  • GRANT:这是一个 SQL 关键字,它用于授予用户权限。
  • ALL PRIVILEGES:这表示所有的权限。在 MySQL 中,权限包括读取数据、写入数据、修改表结构、管理用户等等。ALL PRIVILEGES 表示所有这些权限。
  • ON *.*:这表示所有的数据库和表。在 MySQL 中,*.* 表示所有的数据库和表。你也可以指定一个具体的数据库或表,例如 ON database_name.* 表示指定数据库的所有表,ON database_name.table_name 表示指定的表。
  • TO 'username'@'%':这表示要授予权限的用户。'username'@'%' 是用户的账户名,它由用户名和主机名组成。你需要将 'username''%' 替换为实际的值。

得有足够的权限才能使用 GRANT

创建完用户后 FLUSH PRIVILEGES,当然这一步也是可有可无的,不影响使用。

如果你想要更改用户名可以使用

RENAME USER 'old_username'@'%' TO 'new_username'@'%';

远程连接 MySQL

既然有了 MySQL 服务器,那就试一试远程连接。

修改 MySQL 配置文件

nano /etc/mysql/my.cnf

进入编辑栏,添加

[mysqld]
bind-address = 0.0.0.0

Linux与MySQL-5.png

最后就重启一下 MySQL 服务

sudo service mysql restart

用 DataGrip 测试结果

进入 DataGrip,File 点击 Data Source,点击+号,选择 MySQL。

Linux与MySQL-6.png

填写下 name,host,user。host 就是你的 linxu 主机的 ip 地址,user 是 MySQL 的你要使用的用户。port 也有可能不是 3306,有时候需要查询一下。

Linux与MySQL-7.png

进程号和端口号的区别

  1. 进程号(Process ID,PID):每个在操作系统中运行的进程都有一个唯一的进程号。这个进程号是由操作系统在进程创建时自动分配的。进程号可以用来唯一标识一个进程,例如在任务管理器中查看进程的状态,或者在命令行中结束一个进程。
  2. 端口号(Port number):在网络通信中,端口号用来标识主机上的特定应用程序。每个网络服务都监听一个或多个端口,当其他主机想要与这个服务通信时,就需要连接到这个端口。例如,HTTP 服务通常监听 80 端口,HTTPS 服务通常监听 443 端口,MySQL 服务通常监听 3306 端口。

所以,进程号和端口号是两个完全不同的概念,它们用来标识的也是两个完全不同的东西:进程号标识的是进程,端口号标识的是网络服务。

笔者的话

又是没什么可说的一天。最初我是打算一天一篇博客写下去的,但是这还没开始几天就开始疲倦了,短暂兴奋过后就是长久的烦躁,自律之类的话完全是虚假的,最终还是需要习惯,到无意识开始才是真正做到了。

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值