目录
一、环境
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。
- service是一个脚本命令,分析service可知是去/etc/init.d目录下执行相关程序。service和chkconfig结合使用。服务配置文件存放目录/etc/init.d/
- 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参数说明:
- username:将创建的用户名
- host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
- 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;
参数说明:
- privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
- databasename:数据库名
- 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管理命令与基础操作
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;