标签:除了 gis slave csv sre gen create select ace
已经通过报的方式安装了mysql,装完之后有些安全设置必须要做。
装完以后数据库已经可以使用了,但是有安全风险。
风险在访问数据库不需要任何信息就可以访问。
[10:17:02 root@C8[ ~]#mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.4.13-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
MariaDB [(none)]>
[10:15:59 root@C8[ ~]#systemctl status mysql
● mariadb.service - MariaDB 10.4.13 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: >
Drop-In: /etc/systemd/system/mariadb.service.d
└─migrated-from-my.cnf-settings.conf
Active: active (running) since Thu 2020-06-04 10:15:21 CST; 50s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 1192 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_PO>
Process: 1011 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||>
Process: 984 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSI>
Main PID: 1035 (mysqld) #***服务器端主程序***
Status: "Taking your SQL requests now..."
Tasks: 30 (limit: 11330)
Memory: 100.8M
CGroup: /system.slice/mariadb.service
└─1035 /usr/sbin/mysqld #***主程序路径***
Jun 04 10:15:21 C8 mysqld[1035]: 2020-06-04 10:15:21 0 [Note] InnoDB: 10.4.13 starte>
Jun 04 10:15:21 C8 mysqld[1035]: 2020-06-04 10:15:21 0 [Note] Plugin ‘FEEDBACK‘ is d>
Jun 04 10:15:21 C8 mysqld[1035]: 2020-06-04 10:15:21 0 [Note] InnoDB: Loading buffer>
Jun 04 10:15:21 C8 mysqld[1035]: 2020-06-04 10:15:21 0 [Note] InnoDB: Buffer pool(s)>
Jun 04 10:15:21 C8 mysqld[1035]: 2020-06-04 10:15:21 0 [Note] Server socket created >
Jun 04 10:15:21 C8 mysqld[1035]: 2020-06-04 10:15:21 0 [Note] Reading of all Master_>
Jun 04 10:15:21 C8 mysqld[1035]: 2020-06-04 10:15:21 0 [Note] Added new Master_info >
Jun 04 10:15:21 C8 mysqld[1035]: 2020-06-04 10:15:21 0 [Note] /usr/sbin/mysqld: read>
Jun 04 10:15:21 C8 mysqld[1035]: Version: ‘10.4.13-MariaDB‘ socket: ‘/var/lib/mysql>
Jun 04 10:15:21 C8 systemd[1]: Started MariaDB 10.4.13 database server.
通过查看进程信息,我们可以看到,主进程是通过mysql这个用户运行的。
这个进程是一个l,目前mysql运行的方式是以多线程运行的。
[10:21:55 root@C8[ ~]#ps aux | grep 1035
mysql 1035 0.0 4.9 1298628 92332 ? Ssl 10:15 0:00 /usr/sbin/mysqld
root 1823 0.0 0.0 12108 1028 pts/0 R+ 10:26 0:00 grep --color=auto 1035
可以通过pstree查看进程树。可以通过 ps auxf 查看父进程。
有一个进程,里面生成了若干个线程。
[10:32:31 root@C8[ ~]#pstree -p |grep mysql
|-mysqld(1035)-+-{mysqld}(1037)
| |-{mysqld}(1088)
| |-{mysqld}(1106)
| |-{mysqld}(1110)
| |-{mysqld}(1111)
| |-{mysqld}(1112)
| |-{mysqld}(1113)
| |-{mysqld}(1114)
| |-{mysqld}(1115)
| |-{mysqld}(1116)
| |-{mysqld}(1117)
| |-{mysqld}(1118)
| |-{mysqld}(1119)
| |-{mysqld}(1159)
| |-{mysqld}(1160)
可以看出mysql是安装软件时自动创建的
[10:32:41 root@C8[ ~]#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
……
mysql:x:989:985:MySQL server:/var/lib/mysql:/sbin/nologin
/var/lib/mysql 里放的就是真正数据库的数据
[10:42:33 root@C8[ ~]#ll -h /var/lib/mysql
total 121M
-rw-rw----. 1 mysql mysql 24K Jun 2 08:47 aria_log.00000001
-rw-rw----. 1 mysql mysql 52 Jun 2 08:47 aria_log_control
-rw-rw----. 1 mysql mysql 5 Jun 4 10:15 C8.pid
-rw-rw----. 1 mysql mysql 972 Jun 2 08:47 ib_buffer_pool
-rw-rw----. 1 mysql mysql 12M Jun 2 08:47 ibdata1
-rw-rw----. 1 mysql mysql 48M Jun 4 10:15 ib_logfile0
-rw-rw----. 1 mysql mysql 48M Jun 2 08:47 ib_logfile1
-rw-rw----. 1 mysql mysql 12M Jun 4 10:15 ibtmp1
-rw-rw----. 1 mysql mysql 0 Jun 2 08:56 multi-master.info
drwx------. 2 mysql mysql 4.0K Jun 2 08:47 mysql
srwxrwxrwx. 1 mysql mysql 0 Jun 4 10:15 mysql.sock
drwx------. 2 mysql mysql 20 Jun 2 08:47 performance_schema
drwx------. 2 mysql mysql 20 Jun 2 08:47 test
mysql有自己的用户账户列表,和系统的账户没有关系
用户的账户列表也是存放在数据库的这个目录里的
在安装好服务器主程序的同时,已经安装好客户端程序,也叫mysql
[10:42:50 root@C8[ ~]#type mysql
mysql is hashed (/usr/bin/mysql)
[10:53:18 root@C8[ ~]#which mysql
/usr/bin/mysql
我们可以看一些这个工具来自哪个包
[11:21:21 root@C8[ ~]#rpm -qf `which mysql`
MariaDB-client-10.4.13-1.el8.x86_64
这个客户端工具可以用它来连接数据库,不仅可以用来连接当前主机的数据库,还可以用来连接远程主机的数据库。
[11:21:26 root@C8[ ~]#mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.4.13-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
MariaDB [(none)]>
安装好数据库之后,默认有3个实体数据库。
有一个数据库比较特殊,information_schema内存中的数据库,没有文件夹。
MariaDB [(none)]> show datanases;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘datanases‘ at line 1
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.005 sec)
mysql文件夹中有很多很多的表
[11:39:39 root@C8[ ~]#ll -h /var/lib/mysql/mysql
total 2.7M
-rw-------. 1 mysql mysql 2.1K Jun 2 08:47 columns_priv.frm
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 columns_priv.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 columns_priv.MAI
-rw-------. 1 mysql mysql 2.6K Jun 2 08:47 column_stats.frm
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 column_stats.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 column_stats.MAI
-rw-------. 1 mysql mysql 2.7K Jun 2 08:47 db.frm
-rw-------. 1 mysql mysql 16K Jun 2 08:47 db.MAD
-rw-------. 1 mysql mysql 24K Jun 2 08:47 db.MAI
-rw-------. 1 mysql mysql 65 Jun 2 08:47 db.opt
-rw-------. 1 mysql mysql 3.7K Jun 2 08:47 event.frm
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 event.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 event.MAI
-rw-------. 1 mysql mysql 1.6K Jun 2 08:47 func.frm
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 func.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 func.MAI
-rw-------. 1 mysql mysql 35 Jun 2 08:47 general_log.CSM
-rw-------. 1 mysql mysql 0 Jun 2 08:47 general_log.CSV
-rw-------. 1 mysql mysql 804 Jun 2 08:47 general_log.frm
-rw-------. 1 mysql mysql 1.5K Jun 2 08:47 global_priv.frm
-rw-------. 1 mysql mysql 16K Jun 2 08:47 global_priv.MAD
-rw-------. 1 mysql mysql 16K Jun 2 08:47 global_priv.MAI
-rw-------. 1 mysql mysql 1.0K Jun 2 08:47 gtid_slave_pos.frm
-rw-------. 1 mysql mysql 96K Jun 2 08:47 gtid_slave_pos.ibd
-rw-------. 1 mysql mysql 1.7K Jun 2 08:47 help_category.frm
-rw-------. 1 mysql mysql 16K Jun 2 08:47 help_category.MAD
-rw-------. 1 mysql mysql 24K Jun 2 08:47 help_category.MAI
-rw-------. 1 mysql mysql 1.6K Jun 2 08:47 help_keyword.frm
-rw-------. 1 mysql mysql 16K Jun 2 08:47 help_keyword.MAD
-rw-------. 1 mysql mysql 24K Jun 2 08:47 help_keyword.MAI
-rw-------. 1 mysql mysql 968 Jun 2 08:47 help_relation.frm
-rw-------. 1 mysql mysql 16K Jun 2 08:47 help_relation.MAD
-rw-------. 1 mysql mysql 16K Jun 2 08:47 help_relation.MAI
-rw-------. 1 mysql mysql 1.8K Jun 2 08:47 help_topic.frm
-rw-------. 1 mysql mysql 1.6M Jun 2 08:47 help_topic.MAD
-rw-------. 1 mysql mysql 40K Jun 2 08:47 help_topic.MAI
-rw-------. 1 mysql mysql 1.6K Jun 2 08:47 index_stats.frm
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 index_stats.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 index_stats.MAI
-rw-------. 1 mysql mysql 5.3K Jun 2 08:47 innodb_index_stats.frm
-rw-------. 1 mysql mysql 96K Jun 2 08:47 innodb_index_stats.ibd
-rw-------. 1 mysql mysql 1.9K Jun 2 08:47 innodb_table_stats.frm
-rw-------. 1 mysql mysql 96K Jun 2 08:47 innodb_table_stats.ibd
-rw-------. 1 mysql mysql 1.5K Jun 2 08:47 plugin.frm
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 plugin.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 plugin.MAI
-rw-------. 1 mysql mysql 3.5K Jun 2 08:47 proc.frm
-rw-------. 1 mysql mysql 16K Jun 2 08:47 proc.MAD
-rw-------. 1 mysql mysql 16K Jun 2 08:47 proc.MAI
-rw-------. 1 mysql mysql 2.9K Jun 2 08:47 procs_priv.frm
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 procs_priv.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 procs_priv.MAI
-rw-------. 1 mysql mysql 2.8K Jun 2 08:47 proxies_priv.frm
-rw-------. 1 mysql mysql 16K Jun 2 08:47 proxies_priv.MAD
-rw-------. 1 mysql mysql 24K Jun 2 08:47 proxies_priv.MAI
-rw-------. 1 mysql mysql 1.7K Jun 2 08:47 roles_mapping.frm
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 roles_mapping.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 roles_mapping.MAI
-rw-------. 1 mysql mysql 9.8K Jun 2 08:47 servers.frm
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 servers.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 servers.MAI
-rw-------. 1 mysql mysql 35 Jun 2 08:47 slow_log.CSM
-rw-------. 1 mysql mysql 0 Jun 2 08:47 slow_log.CSV
-rw-------. 1 mysql mysql 2.4K Jun 2 08:47 slow_log.frm
-rw-------. 1 mysql mysql 3.0K Jun 2 08:47 tables_priv.frm
-rw-------. 1 mysql mysql 16K Jun 2 08:47 tables_priv.MAD
-rw-------. 1 mysql mysql 24K Jun 2 08:47 tables_priv.MAI
-rw-------. 1 mysql mysql 1.4K Jun 2 08:47 table_stats.frm
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 table_stats.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 table_stats.MAI
-rw-------. 1 mysql mysql 971 Jun 2 08:47 time_zone.frm
-rw-------. 1 mysql mysql 969 Jun 2 08:47 time_zone_leap_second.frm
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 time_zone_leap_second.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 time_zone_leap_second.MAI
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 time_zone.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 time_zone.MAI
-rw-------. 1 mysql mysql 1.2K Jun 2 08:47 time_zone_name.frm
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 time_zone_name.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 time_zone_name.MAI
-rw-------. 1 mysql mysql 1011 Jun 2 08:47 time_zone_transition.frm
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 time_zone_transition.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 time_zone_transition.MAI
-rw-------. 1 mysql mysql 1.1K Jun 2 08:47 time_zone_transition_type.frm
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 time_zone_transition_type.MAD
-rw-------. 1 mysql mysql 8.0K Jun 2 08:47 time_zone_transition_type.MAI
-rw-------. 1 mysql mysql 2.6K Jun 2 08:47 transaction_registry.frm
-rw-------. 1 mysql mysql 144K Jun 2 08:47 transaction_registry.ibd
-rw-------. 1 mysql mysql 14K Jun 2 08:47 user.frm
相同文件名的每个表由多个不同文件组成。
数据库服务器上可以跑好多好多独立的数据库
每个数据库由好多张不同的表组成。
user.frm 存放着用户信息,不是文本文件,不能直接看。
想要看user.frm这个表,需要先进入mysql这个数据库。
MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mysql]>
MariaDB [mysql]> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| column_stats |
| columns_priv |
| db |
| event |
| func |
| general_log |
| global_priv |
| gtid_slave_pos |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| index_stats |
| innodb_index_stats |
| innodb_table_stats |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| roles_mapping |
| servers |
| slow_log |
| table_stats |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| transaction_registry |
| user |
+---------------------------+
31 rows in set (0.000 sec)
MariaDB [mysql]> desc user;
+------------------------+---------------------+------+-----+----------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+---------------------+------+-----+----------+-------+
| Host | char(60) | NO | | | |
| User | char(80) | NO | | | |
| Password | longtext | YES | | NULL | |
| Select_priv | varchar(1) | YES | | NULL | |
| Insert_priv | varchar(1) | YES | | NULL | |
| Update_priv | varchar(1) | YES | | NULL | |
| Delete_priv | varchar(1) | YES | | NULL | |
| Create_priv | varchar(1) | YES | | NULL | |
| Drop_priv | varchar(1) | YES | | NULL | |
| Reload_priv | varchar(1) | YES | | NULL | |
| Shutdown_priv | varchar(1) | YES | | NULL | |
| Process_priv | varchar(1) | YES | | NULL | |
| File_priv | varchar(1) | YES | | NULL | |
| Grant_priv | varchar(1) | YES | | NULL | |
| References_priv | varchar(1) | YES | | NULL | |
| Index_priv | varchar(1) | YES | | NULL | |
| Alter_priv | varchar(1) | YES | | NULL | |
| Show_db_priv | varchar(1) | YES | | NULL | |
| Super_priv | varchar(1) | YES | | NULL | |
| Create_tmp_table_priv | varchar(1) | YES | | NULL | |
| Lock_tables_priv | varchar(1) | YES | | NULL | |
| Execute_priv | varchar(1) | YES | | NULL | |
| Repl_slave_priv | varchar(1) | YES | | NULL | |
| Repl_client_priv | varchar(1) | YES | | NULL | |
| Create_view_priv | varchar(1) | YES | | NULL | |
| Show_view_priv | varchar(1) | YES | | NULL | |
| Create_routine_priv | varchar(1) | YES | | NULL | |
| Alter_routine_priv | varchar(1) | YES | | NULL | |
| Create_user_priv | varchar(1) | YES | | NULL | |
| Event_priv | varchar(1) | YES | | NULL | |
| Trigger_priv | varchar(1) | YES | | NULL | |
| Create_tablespace_priv | varchar(1) | YES | | NULL | |
| Delete_history_priv | varchar(1) | YES | | NULL | |
| ssl_type | varchar(9) | YES | | NULL | |
| ssl_cipher | longtext | NO | | | |
| x509_issuer | longtext | NO | | | |
| x509_subject | longtext | NO | | | |
| max_questions | bigint(20) unsigned | NO | | 0 | |
| max_updates | bigint(20) unsigned | NO | | 0 | |
| max_connections | bigint(20) unsigned | NO | | 0 | |
| max_user_connections | bigint(21) | NO | | 0 | |
| plugin | longtext | NO | | | |
| authentication_string | longtext | NO | | | |
| password_expired | varchar(1) | NO | | | |
| is_role | varchar(1) | YES | | NULL | |
| default_role | longtext | NO | | | |
| max_statement_time | decimal(12,6) | NO | | 0.000000 | |
+------------------------+---------------------+------+-----+----------+-------+
47 rows in set (0.001 sec)
mysql的用户名由两部分组成,一部分是用户名,一部分是主机名
mysql中不仅需要验证用户名和密码,还要确保访问数据库的主机是合法的。
早期mysql密码存放在password中,现在存放在authentication_string中
MariaDB [mysql]> select user,host,password,authentication_string from user;
+-------------+-----------+----------+-----------------------+
| User | Host | Password | authentication_string |
+-------------+-----------+----------+-----------------------+
| mariadb.sys | localhost | | |
| root | localhost | invalid | invalid |
| mysql | localhost | invalid | invalid |
| | localhost | | |
| | c8 | | |
+-------------+-----------+----------+-----------------------+
5 rows in set (0.001 sec)
mysql本身提供了一个超级用户root,权限很大。
Current user显示当前登录的用户
Current user: root@localhost
有两个账户给特定服务用的 mariadb.sys 和mysql
还有两个空账户,代表匿名帐户,随便输入用户名都可以登录。
除了root都是普通账号
[12:29:25 root@C8[ ~]#mysql -ubaipangzi
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.4.13-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
MariaDB [(none)]> status
--------------
mysql Ver 15.1 Distrib 10.4.13-MariaDB, for Linux (x86_64) using readline 5.1
Connection id: 12
Current database:
Current user: baipangzi@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ‘‘
Using delimiter: ;
Server: MariaDB
Server version: 10.4.13-MariaDB MariaDB Server
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 2 hours 14 min 29 sec
Threads: 7 Questions: 56 Slow queries: 0 Opens: 36 Flush tables: 1 Open tables: 30 Queries per second avg: 0.006
--------------
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
2 rows in set (0.000 sec)
MariaDB [(none)]> use mysql
ERROR 1044 (42000): Access denied for user ‘‘@‘localhost‘ to database ‘mysql‘
MariaDB [mysql]> status
--------------
mysql Ver 15.1 Distrib 10.4.13-MariaDB, for Linux (x86_64) using readline 5.1
Connection id: 11
Current database: mysql
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ‘‘
Using delimiter: ;
Server: MariaDB
Server version: 10.4.13-MariaDB MariaDB Server
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 2 hours 6 min 33 sec
Threads: 7 Questions: 52 Slow queries: 0 Opens: 36 Flush tables: 1 Open tables: 30 Queries per second avg: 0.006
--------------
安装完mysql后,密码为空,在敲mysql登录数据库的时候,事实上省略了-u选项。
默认为-uroot
10.4版之前,root账户空口零都是可以登陆的,早前的版本任何账户都可以匿名成root登录。
软件本身自带mysql_secure_installation安全加固脚本
[12:38:33 root@C8[ ~]#rpm -qf `which mysql_secure_installation`
MariaDB-server-10.4.13-1.el8.x86_64
运行脚本
[12:39:12 root@C8[ ~]#mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we‘ll need the current
password for the root user. If you‘ve just installed MariaDB, and
haven‘t set the root password yet, you should just press enter here.
Enter current password for root (enter for none):
标签:除了 gis slave csv sre gen create select ace
原文地址:https://www.cnblogs.com/bpzblog/p/13042824.html