mysql安装 目录 用户

1.linux下安装mysql8.0

rpm安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# 查看是否安装过mysql
[root@localhost ~]# rpm -qa | grep -i mysql
# 给tmp目录增加权限
[root@localhost opt]# chmod -R 777 /tmp

[root@localhost /]# cd opt/
[root@localhost opt]# ll
total 489744
-rw-r--r--. 1 root root 47810444 Sep 5 11:35 mysql-community-client-8.0.25-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 193616 Sep 5 11:35 mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 628904 Sep 5 11:35 mysql-community-common-8.0.25-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 4240320 Sep 5 11:35 mysql-community-libs-8.0.25-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 448614076 Sep 5 11:35 mysql-community-server-8.0.25-1.el7.x86_64.rpm

# 安装依赖服务
[root@localhost opt]# rpm -qa|grep libaio
libaio-0.3.109-13.el7.x86_64
[root@localhost opt]# rpm -qa|grep net-tools
# 安装依赖服务
[root@localhost opt]# yum install net-tools

[root@localhost ~]# cd /opt/
[root@localhost opt]# rpm -ivh mysql-community-common-8.0.25-1.el7.x86_64.rpm
warning: mysql-community-common-8.0.25-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-common-8.0.25-1.e################################# [100%]
[root@localhost opt]# rpm -ivh mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm
warning: mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-client-plugins-8.################################# [100%]
[root@localhost opt]# rpm -ivh mysql-community-libs-8.0.25-1.el7.x86_64.rpm
warning: mysql-community-libs-8.0.25-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
mariadb-libs is obsoleted by mysql-community-libs-8.0.25-1.el7.x86_64
[root@localhost opt]# yum remove mysql-libs
Loaded plugins: fastestmirror
Complete!
[root@localhost opt]# rpm -ivh mysql-community-libs-8.0.25-1.el7.x86_64.rpm
warning: mysql-community-libs-8.0.25-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-libs-8.0.25-1.el7################################# [100%]
[root@localhost opt]# rpm -ivh mysql-community-client-8.0.25-1.el7.x86_64.rpm
warning: mysql-community-client-8.0.25-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-client-8.0.25-1.e################################# [100%]
[root@localhost opt]# rpm -ivh mysql-community-server-8.0.25-1.el7.x86_64.rpm
warning: mysql-community-server-8.0.25-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
/usr/bin/perl is needed by mysql-community-server-8.0.25-1.el7.x86_64
perl(Getopt::Long) is needed by mysql-community-server-8.0.25-1.el7.x86_64
perl(strict) is needed by mysql-community-server-8.0.25-1.el7.x86_64
# 安装依赖服务
[root@localhost opt]# yum -y install perl

# 这里的mysql-server还是未安装的,此时没有mysqld命令,但mysql和mysqladmin命令已经可以用了
[root@localhost opt]#
[root@localhost opt]# mysql --version
mysql Ver 8.0.25 for Linux on x86_64 (MySQL Community Server - GPL)
[root@localhost opt]# mysqladmin --version
mysqladmin Ver 8.0.25 for Linux on x86_64 (MySQL Community Server - GPL)
[root@localhost opt]# mysqld --initialize --user=mysql
-bash: mysqld: command not found

# 看网上的文章需要安装以下组件,然后就安装了,但是还是失效的
[root@localhost local]# cd /opt/

# 此时查询安装列表,发现没有server,然后安装server后,mysqld命令生效
[root@localhost bin]# rpm -qa | grep mysql
mysql-community-client-plugins-8.0.25-1.el7.x86_64
mysql-community-client-8.0.25-1.el7.x86_64
mysql-community-devel-8.0.25-1.el7.x86_64
mysql-community-common-8.0.25-1.el7.x86_64
mysql-community-libs-8.0.25-1.el7.x86_64
[root@localhost bin]# cd /opt/
[root@localhost opt]# ls
mysql-community-client-8.0.25-1.el7.x86_64.rpm mysql-community-devel-8.0.25-1.el7.x86_64.rpm
mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm mysql-community-libs-8.0.25-1.el7.x86_64.rpm
mysql-community-common-8.0.25-1.el7.x86_64.rpm mysql-community-server-8.0.25-1.el7.x86_64.rpm
[root@localhost opt]# rpm -ivh mysql-community-server-8.0.25-1.el7.x86_64.rpm
warning: mysql-community-server-8.0.25-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-server-8.0.25-1.e########################## ( 78%)
################################# [100%]
# 初始化mysql
[root@localhost opt]# mysqld --initialize --user=mysql

[root@localhost opt]# cat /var/log/mysqld.log
2024-09-05T05:43:35.655069Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.25) initializing of server in progress as process 3259
2024-09-05T05:43:35.688104Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-09-05T05:55:52.115095Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-09-05T05:55:53.460840Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: -7x0ioJKikwT
[root@localhost opt]# systemctl start mysqld.service
[root@localhost opt]#
[root@localhost opt]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2024-09-05 13:58:11 CST; 20s ago
# 查看是否开机自启
[root@localhost opt]# systemctl list-unit-files|grep mysqld.service
mysqld.service enabled
[root@localhost opt]# mysql -hlocalhost -P3306 -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysqlnew';

## ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'abc123';

Query OK, 0 rows affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)

mysql>


通过这种方式创建的 mysql8.0 中,密码校验默认没有启用

字符集

1
2
# 查看默认字符集
show variables like 'character%';

字符集 默认关注 character_set_server character_set_database,因为这两个影响了默认情况下创建数据库的字符集。

utf8_unicode_ci:速度慢,准确性高
utf8_general_ci:速度快,准确度低

对于中英文,两个没有区别,如果有德语法语俄语,需要使用unicode

系统变量 描述 character_set_client 服务器解码请求时使用的字符集 character_set_connection 服务器处理请求时会把请求字符串从 character_set_client 转为 character_set_connection character_set_results 服务器向客户端返回数据时使用的字符集

character_set_client的字符集需要和客户端使用的保持一致。

SQL大小写

  1. 关键字和函数名称全部大写;
  2. 数据库名、表名、表别名、字段名、字段别名等全部小写;
  3. SQL 语句必须以分号结尾。

2.mysql目录

window

/data 一个一个文件夹就是一个一个数据库,再进去 ibd就是表结构
my.ini mysql配置文件
/bin 指令

linux

数据库文件存放目录:/var/lib/mysql 数据库在这里有个文件夹,进去后有表,后缀是 ibd
相关命令目录:/usr/bin(mysqladmin、mysqlbinlog、mysqldump等命令)和/usr/sbin。
配置文件目录:/usr/share/mysql-8.0(命令及配置文件),/etc/my.cnf(如my.cnf)

数据库在文件系统中的表示 /var/lib/mysql
这个数据目录下的文件和子目录比较多,除了 information_schema 这个系统数据库外,其他的数据库在 数据目录 下都有对应的子目录。

innodb引擎

5.7
表结构 table_name.frm
表数据,默认在这个文件中 table_name.idb,也可以放在../ibdata1文件中,这个是系统表空间
5.6.6之后的版本中,创建了独立表空间:table_name.idb

8.0
没有frm这个文件,只有表数据,frm数据也放在这个文件中了 table_name.idb
ibd2sdi 工具可以解析idb文件

myisam

数据库下有三个文件:
test.frm 存储表结构
test.MYD 存储数据 (MYData)
test.MYI 存储索引 (MYIndex)

在innodb中,数据和索引都在idb中,在myisam中,数据和索引是分开的

视图的话,只会存储一个xxx.frm表名:因为视图不存储数据,只展示数据。

3.用户与权限管理

用户管理

1
2
3
4
5
6
7
8
9
10
mysql –h hostname|hostIP –P port –u username –p DatabaseName –e "SQL语句"

下面详细介绍命令中的参数:
-h参数 后面接主机名或者主机IP,hostname为主机,hostIP为主机IP。
-P参数 后面接MySQL服务的端口,通过该参数连接到指定的端口。MySQL服务的默认端口是3306,不使用该参数时自动连接到3306端口,port为连接的端口号。
-u参数 后面接用户名,username为用户名。
-p参数 会提示输入密码。
DatabaseName参数 指明登录到哪一个数据库中。如果没有该参数,就会直接登录到MySQL数据库中,然后可以使用USE命令来选择数据库。
-e参数 后面可以直接加SQL语句。登录MySQL服务器以后即可执行这个SQL语句,然后退出MySQL服务器。

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost ~]# mysql -uroot -p -hlocalhost -P3306 mysql -e "select host,user from user"
Enter password:
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+------------------+
[root@localhost ~]#

创建用户

1
2
3
4
5
6
7
8
9
10
11
CREATE USER 用户名 [IDENTIFIED BY '密码'][,用户名 [IDENTIFIED BY '密码']];

用户名参数表示新建用户的账户,由 用户(User) 和 主机名(Host) 构成;
“[ ]”表示可选,也就是说,可以指定用户登录时需要密码验证,也可以不指定密码验证,这样用户可以直接登录。


CREATE USER zhang3 IDENTIFIED BY '123123';  # 默认host是 %
CREATE USER 'zhang3'@’localhost‘ IDENTIFIED BY '123123';  # 默认host是 %

FLUSH PRIVILEGES;
DROP USER user;  # 默认删除host为%的用户 删除的时候同时删除权限信息

mysql.user 的主键:联合主键:user host

修改用户密码

mysql8的过期策略,重用策略

权限管理

show privileges;

grant ALL on database.tablename to “username”@’host’;

REVOKE 权限1,权限2,…权限n ON 数据库名称.表名称 FROM 用户名@用户地址;

只要你创建了一个角色,系统就会自动给你一个“ USAGE ”权限,意思是 连接登录数据库的权限 。

配置文件

[server]

[mysqld]

[mysqladmin]

变量

全局变量

系统变量


参考链接:

yum安装mysql后没有mysqld - bwteacher - 博客园 (cnblogs.com)

MySQL :: Download MySQL Community Server (Archived Versions)

MySQL :: MySQL 8.0 Reference Manual