利用Linux学习MySQL
本文最后更新于 2024年7月17日 晚上
引言
使用 Linux 进行 MySQL 的学习。
首先来看两个指令,这两个是用来查 Linux 版本的。
1 |
|
今天用 ssh 登陆的时候突然连接不到香橙派了,最后是用网线才解决问题。
或许是因为路由器每天重启的原因。
安装 MySQL
首先,先要更新包列表,每次安装什么新的东西都要操作一次
1 |
|
然后就直接安装 MySQL 的服务器了
1 |
|
可以查一下 MySQL 的版本,看看是 5.7 还是 8.0
1 |
|
这里可以看到是 8.0。
我们也可以看看这个 mysql 是安在哪里了
1 |
|
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 中进行)
1 |
|
输入这行指令之后,让你输入密码,同样是不显示位数的,什么都没有。
然后就可以开始使用了。
1 |
|
先显示一下所有的数据库,注意是 databases
后面是有个
s
的,还有得加个 ;
。
除了 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_schema
和information_schema
数据库的数据创建的,它们提供了一种更易于理解和使用的方式来访问这些数据例如,sys
数据库中的schema_tables_with_full_table_scans
视图可以帮助你找出那些经常进行全表扫描的表,这可能是性能问题的一个指标。
创建一个数据库
1 |
|
注意,linux 上的 mysql 是区分大小写的,但是 win 上面的是不区分的都是小写,但是如果你 linux 上以及区分大小写了,你用 win 连接这个 linux 上的数据库,那么 win 上面也就区分大小写了。
使用这个新建的数据库
1 |
|
至于说其他的操作,就请期待我的数据库的内容了。
更改 MySQL 用户验证方式
接下来你如果切换为其他用户,不是 root 用户,可能无法登录 MySQL 的
root 用户,这是因为 MySQL 默认的 root
用户使用了
auth_socket
插件进行身份验证,这意味着只有系统的
root
用户才能以 MySQL 的 root
用户身份登录。
先切换为 linux 的 root 用户。
然后登录 MySQL 的 root 用户。
1 |
|
登录进去后更改 root 用户的验证方式
1 |
|
最后刷新下权限(可有可无)
1 |
|
恢复的话就更改第二步的内容
1 |
|
新建 MySQL 用户
第一步还是要用 mysql 的 root 用户登录。
之后在 MySQL 提示符下,使用 CREATE USER
命令创建新用户
1 |
|
'username'
是用户的名称,它可以是任何有效的标识符。在 MySQL 中,标识符可以包含字母、数字、下划线、美元符号等字符,但不能包含空格、点、破折号等特殊字符。标识符的长度不能超过 32 个字符。'%'
是主机名,它指定了用户可以从哪些主机连接到 MySQL 服务器。'%'
表示任何主机,也就是说,用户可以从任何 IP 地址连接到 MySQL 服务器。你也可以指定一个具体的 IP 地址或主机名,例如'192.168.1.1'
或'localhost'
。你也可以给个名字Soleil
这就要求连接到 MySQL 服务器的主机名字要叫 Soleil。如果主机不符合@后面规定的要求,那就没法连接。password
为你想设置的密码,注意千万别忘记。
最后,你需要给新用户分配权限。你可以使用 GRANT
命令来做这个。 这里我们要给我们的新用户赋予全部的权限。
1 |
|
GRANT
:这是一个 SQL 关键字,它用于授予用户权限。ALL PRIVILEGES
:这表示所有的权限。在 MySQL 中,权限包括读取数据、写入数据、修改表结构、管理用户等等。ALL PRIVILEGES
表示所有这些权限。ON *.*
:这表示所有的数据库和表。在 MySQL 中,*.*
表示所有的数据库和表。你也可以指定一个具体的数据库或表,例如ON database_name.*
表示指定数据库的所有表,ON database_name.table_name
表示指定的表。TO 'username'@'%'
:这表示要授予权限的用户。'username'@'%'
是用户的账户名,它由用户名和主机名组成。你需要将'username'
和'%'
替换为实际的值。
得有足够的权限才能使用 GRANT
。
创建完用户后
FLUSH PRIVILEGES
,当然这一步也是可有可无的,不影响使用。
如果你想要更改用户名可以使用
1 |
|
远程连接 MySQL
既然有了 MySQL 服务器,那就试一试远程连接。
修改 MySQL 配置文件
1 |
|
进入编辑栏,添加
1 |
|
最后就重启一下 MySQL 服务
1 |
|
用 DataGrip 测试结果
进入 DataGrip,File 点击 Data Source,点击+号,选择 MySQL。
填写下 name,host,user。host
就是你的 linxu 主机的 ip
地址,user
是 MySQL 的你要使用的用户。port
也有可能不是 3306,有时候需要查询一下。
进程号和端口号的区别
- 进程号(Process ID,PID):每个在操作系统中运行的进程都有一个唯一的进程号。这个进程号是由操作系统在进程创建时自动分配的。进程号可以用来唯一标识一个进程,例如在任务管理器中查看进程的状态,或者在命令行中结束一个进程。
- 端口号(Port number):在网络通信中,端口号用来标识主机上的特定应用程序。每个网络服务都监听一个或多个端口,当其他主机想要与这个服务通信时,就需要连接到这个端口。例如,HTTP 服务通常监听 80 端口,HTTPS 服务通常监听 443 端口,MySQL 服务通常监听 3306 端口。
所以,进程号和端口号是两个完全不同的概念,它们用来标识的也是两个完全不同的东西:进程号标识的是进程,端口号标识的是网络服务。
笔者的话
又是没什么可说的一天。最初我是打算一天一篇博客写下去的,但是这还没开始几天就开始疲倦了,短暂兴奋过后就是长久的烦躁,自律之类的话完全是虚假的,最终还是需要习惯,到无意识开始才是真正做到了。