Linux 使用 MySQL

一、环境

Ubantu
MySQL

二、安装

在Ubuntu 22.04 LTS 上安装 MySQL两种方式:在线方式和离线方式

1.更新

在进行任何软件安装之前,请确保你的系统的软件包列表是最新的。
打开终端并运行以下命令:

sudo apt update
sudo apt upgarde

根据提示更新软件。

2.在线安装

可以选择离线安装(安装包安装)和在线安装(直接通过终端完成)。本篇中使用在线安装。

1、查看一下可使用的MySQL安装包

# 查看可使用的安装包
sudo apt search mysql-server

在这里插入图片描述
2、安装MySQL服务器

# 安装最新版本
sudo apt install -y mysql-server
# 安装指定版本
sudo apt install -y mysql-server-8.0

如果不加-y 会在安装过程中,系统将提示你设置MySQL的root密码。确保密码足够强,且记住它,因为你将在以后需要用到它。

3、启动MySQL服务器

# 启动MySQL服务器
sudo systemctl start mysql
# 将MySQL设置为开机自启动
sudo systemctl enable mysql
# 检查MySQL是否正在运行
sudo systemctl status mysql

检查结果:
在这里插入图片描述
至此已成功安装。

3.离线安装

先查看系统位数,根据对应的系统位数,选择需要下载的文件。

getconf LONG_BIT

4.修改密码和权限

linux ubuntu mysql 默认密码
安装 MySQL 后,在 /etc/mysql 目录下有个 debian.cnf,这里存储着默认的密码。

sudo cat /etc/mysql/debian.cnf  # 查看默认密码

reich@reich-virtual-machine:~$ sudo cat /etc/mysql/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = AANUJwghKzwN5j1O
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = AANUJwghKzwN5j1O
socket   = /var/run/mysqld/mysqld.sock

password 后面的就是默认密码,使用上面的默认密码登录进去,然后跟普通的 MySQL 一样进行修改密码。

注意:在MySQL里,语句要以 “;” 或 “\g” 结尾

# 登录
mysql -u debian-sys-maint -p		# 然后输入上面查到的默认密码

# 修改密码
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; # 密码123456自己修改
flush privileges;		# 刷新授权
quit;					# 退出mysql命令行

刷新授权:这句表示从mysql数据库的grant表中重新加载权限数据,因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。

修改完成后,用修改后的密码登录。

# 重新启动MySQL server
sudo service mysql restart

# 使用新设置的密码登录root
mysql -u root -p 	# 输入密码

三、使用

Ubuntu 安装和使用MySQL
Linux安装部署MySQL5.7(企业常用版)超详细
【MySQL】MySQL在Linux中的环境安装与基本使用

1.服务器的基本使用

# 启动MySQL数据库服务
sudo service mysql start
sudo systemctl start mysql.service 			#也可以不加servive,只写mysql,下同

# 停止MySQL数据库服务
sudo service mysql stop
sudo systemctl stop mysql.service

# 重启MySQL数据库服务
sudo service mysql restart
sudo systemctl restart mysql.service

# 设置MySQL服务开机自启动
sudo service mysql enable
sudo systemctl enable mysql.service

# 停止MySQL服务开机自启动
sudo service mysql disable
sudo systemctl disable mysql.service

# 查看MySQL运行状态
sudo service mysql status
sudo systemctl status mysql.service

# 查看MySQL的配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

systemctl和service的区别:

Linux 服务管理两种方式service和systemctl,以前都用service命令管理mysql,现在liunx系统升级了,又有了新的更好的方法管理系统进程,现在使用systemctl命令管理mysql。

  1. service是一个脚本命令,分析service可知是去/etc/init.d目录下执行相关程序。service和chkconfig结合使用。服务配置文件存放目录/etc/init.d/
  2. Systemd是一个系统管理守护进程、工具和库的集合,是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。Systemd对应的进程管理命令是systemctl,主要负责控制Systemd系统和服务管理器。同时兼容service命令。

在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。Systemd通常是所有其它守护进程的父进程,但并非总是如此。

2.创建用户和授权

2.1 配置MySQL远程登录

为了开发方便,我们需要使用本地电脑远程访问和管理MySQL数据库。

默认情况下,为了安全MySQL只允许本地登录,如果要开启远程连接,则需要修改配置文件。

# 该配置文件默认情况下为只读文件,修改需要root权限
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

打开配置文件,找到bind-address = 127.0.0.1这一行,改为bind-address = 0.0.0.0即可或简单一点注释掉也行

修改完成保存后,需要重启MySQL服务才会生效

接着需要为用户赋予远程登录的权限,使用以下用户授权步骤即可

2.2 创建用户

使用root用户登录进mysql服务器后,即可创建用户。

一般都是在mysql库下操作。

mysql -u root -p 		# 使用自己设定的密码进行登录

use mysql;
# 创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
# 举例
CREATE USER 'pig'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';  

flush privileges;		# 刷新MySQL的系统权限相关表

create参数说明:

  1. username:将创建的用户名
  2. host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
  3. password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

2.3 用户权限操作

1、授予权限
# 授权后的该用户不能给其它用户授权
GRANT privileges ON databasename.tablename TO 'username'@'host';
# 被授权的用户可以将他的拥有的权限授给其他用户
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

# 授权后需要刷新授权
flush privileges;

参数说明:

  1. privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
  2. databasename:数据库名
  3. tablename:表名。如果要授予该用户对所有数据库和表的相应操作权限则可用[* ]表示,如*.*
2、撤销用户权限
REVOKE privileges ON databasename.tablename FROM 'username'@'host';
3、修改用户密码
# 设置与更改用户密码
ALTER USER 'username'@'host' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
4、删除用户
DROP USER 'username'@'host';
5、查看用户
#查看用户信息
use mysql;						# 先选择数据库
SELECT User, Host FROM user;

# 查看用户权限
show grants for 'username'@'host';
6、密码加密规则
# 查看加密的规则
select Host,User,plugin from mysql.user;

# 修改加密方式
ALTER USER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'password';
# mysql_native_password:加密方式
# password:用户密码

3.数据库使用

Linux实战之MySQL数据库——MySQL管理命令与基础操作

在linux下MySQL的常用操作命令

3.1 登录

# 登录mysql数据库
mysql -u 用户名 -p		# 点击回车后输入密码

# 退出mysql命令行
mysql> quit

登录参数:

  • -u:指定用户名
  • -p:指定密码
  • -h:指定主机名,一般填IP地址
  • -P:指定服务器端口

3.2 创建与删除

登录root用户后进行数据库的创建和删除。

# 创建数据库
CREATE DATABASE 数据库名;

# 使用数据库
use 数据库名;

# 删除数据库
DROP DATABASE 数据库名称;

数据库存放于/var/lib/mysql目录下。

创建数据库,本质上就是在创建Linux下创建一个目录。

3.3 数据库的查看

# 查看显示所有数据库
show databases;

# 查看当前使用的数据库
select database();

# 查看当前用户
select uesr();

# 查看数据库使用端口
show variables like 'port';

# 查看数据库的表信息
show tables;

# 查看表结构
show columns from table_name; 
或describe table_name;			#显示表结构,字段类型,主键,是否为空等属性,但不显示外键。

# 查看表生成的DDL 
show create table table_name;

# 查看数据文件存放路径
show variables like '%datadir%';

# 查看数据库编码
show variables like 'character%';

# 查看数据库的最大连接数
show variables like '%max_connections%';

# 查看数据库当前连接数,并发数
show status like 'Threads%';

查看表生成的DDL:

  • DDL(data definition language)数据库定义语言:其实就是我们在创建表的时候用到的一些sql,比如说:CREATE、ALTER、DROP等。DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化。
  • 该命令把创建表的DDL,表结构、类型,外键,备注等全部显示出来。

查看数据库编码:编码方式为utf8、binary等

  • character_set_client 为客户端编码方式;
  • character_set_connection 为建立连接使用的编码;
  • character_set_database 为数据库的编码;
  • character_set_results 为结果集的编码;
  • character_set_server 为数据库服务器的编码;

查看数据库当前连接数,并发数:

  • Threads_cached 代表当前此时此刻线程缓存中有多少空闲线程。
  • Threads_connected 代表当前已建立连接的数量,因为一个连接就需要一个线程,所以也可以看成当前被使用的线程数。
  • Threads_created 代表从最近一次服务启动,已创建线程的数量。
  • Threads_running 代表当前激活的(非睡眠状态)线程数。并不是代表正在使用的线程数,有时候连接已建立,但是连接处于sleep状态,这里相对应的线程也是sleep状态。

3.4 查看Mysql数据库大小

需要先进入information_schema 数据库,该数据库存放了其他的数据库的信息

# 进入数据库
use information_schema;

# 查询所有数据的大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables;
# 查看指定数据库的大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='数据库名称';
# 查看指定数据库的某个表的大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='数据库名称' and table_name='表名称';
# 查看索引所占的空间大小
select concat(round(sum(index_length/1024/1024),2),'MB') as data from tables where table_schema='mysql';

4.数据库表

4.1 创建

mysql> create table students(
    -> name varchar(32),
    -> age int,
    -> gender varchar(2)
    -> );

在()中填入表的每一列名称和该列数据的数据类型。

在数据库中建立表,本质上就是在Linux中创建对应的文件。

4.2 对数据库表的操作

# 插入数据
mysql> insert into students (name, age, gender) values ('张三',22,'男');

# 在表中查询数据 
mysql> select* from students;

4.3 存储引擎

存储引擎:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。

MySQL的核心就是插件式存储引擎,支持多种存储引擎。

#查看MySQL的存储引擎
mysql> show engines;
  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值