####### 作业:编写一个自动安装脚本

MySQL的配置文件

mysql 5.7 初始化是有密码的

root@dell-PowerEdge-R740:/home/tbs# mysqld --help --verbose | grep inse

# 初始化安装时加上这个参数mysql安装时密码是空
--initialize-insecure

  • 文件名: my.cnf (my.ini)
  • 文本文件
  • 可有多个配置文件
  • 参数替换原则
#mysql 配置文件顺序是依次读取,相同的参数会被后面的覆盖
root@dell-PowerEdge-R740:/home/tbs# mysql --help | grep my.cnf
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 

-- 查看mysql所有参数
tbs@localhost:[(none)]>show variables;
-- 查看数据库所在路径
tbs@localhost:[(none)]>show variables like "datadir";
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.01 sec)

mysql 参数分为全局的和会话级别的

-- 会话级别的
tbs@localhost:[(none)]>set session long_query_time = 1.5;
Query OK, 0 rows affected (0.00 sec)

-- 全局的
show global variable long_query_time = 1.5;

对已有的连接没有用,对于会话级别的参数,新会话才会生效。

  • 从作用域上可分为global和session
  • 从类型上又可分为可修改和只读参数
  • 用户可在线修改非只读参数
  • 只读参数只能通过配置文件修改并重启
  • 所有参数的修改都不持久化
# 查看变量,可通过like进行过滤
show [global|session] variables [like 'pattern'| where expr]

# 修改global或session的参数
set [global | session] variables = xxx
tbs@localhost:[performance_schema]>show tables like "%variables%";
+--------------------------------------------+
| Tables_in_performance_schema (%variables%) |
+--------------------------------------------+
| global_variables                           |
| session_variables                          |
| user_variables_by_thread                   |
| variables_by_thread                        |
+--------------------------------------------+
4 rows in set (0.00 sec)

怎么看到其他会话的变量情况?

通过user_variables_by_thread表来查看

-- 查看每个会话的变量情况
tbs@localhost:[performance_schema]>select * from variables_by_thread where variable_name = "long_query_time";
+-----------+-----------------+----------------+
| THREAD_ID | VARIABLE_NAME   | VARIABLE_VALUE |
+-----------+-----------------+----------------+
|        27 | long_query_time | 1.500000       |
|        28 | long_query_time | 10.000000      |
|        29 | long_query_time | 10.000000      |
|        30 | long_query_time | 10.000000      |
+-----------+-----------------+----------------+
4 rows in set (0.00 sec)

-- 通过THREAD_ID查看会话的信息
tbs@localhost:[performance_schema]>select * from threads where thread_id = 27 limit 1\G
*************************** 1. row ***************************
          THREAD_ID: 27
               NAME: thread/sql/one_connection
               TYPE: FOREGROUND
     PROCESSLIST_ID: 2
   PROCESSLIST_USER: tbs
   PROCESSLIST_HOST: localhost
     PROCESSLIST_DB: performance_schema
PROCESSLIST_COMMAND: Sleep
   PROCESSLIST_TIME: 16
  PROCESSLIST_STATE: NULL
   PROCESSLIST_INFO: NULL
   PARENT_THREAD_ID: 1
               ROLE: NULL
       INSTRUMENTED: YES
            HISTORY: YES
    CONNECTION_TYPE: Socket
       THREAD_OS_ID: 64980
1 row in set (0.00 sec)

-- 查看看所有会话信息
SELECT
	*
FROM
	threads
WHERE
	THREAD_ID IN (
		SELECT
			THREAD_ID
		FROM
			variables_by_thread
	);

用户权限管理

所有库权限
指定库权限
指定表权限
执行列权限

删除所有用户名为空的用户
不允许密码为空的用户存在
管理员用户可以有所有库权限
开发应用只需给相应库的权限

-- 创建用户
create user 'davaid'@'192.168.111.1' identified by '123'
-- 删除用户
drop user;
tbs@localhost:[performance_schema]>show grants;
+------------------------------------------+
| Grants for tbs@%                         |
+------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'tbs'@'%' |
+------------------------------------------+
1 row in set (0.00 sec)
tbs@localhost:[performance_schema]>grant select ,update,insert,delete on test.*;

不要用grant创建用户,先创建用户,在grant权限。

revoke 仅删除权限,不删除用户。

用户权限

tbs@localhost:[mysql]>select user, host, authentication_string  from user;
+------------------+-----------+-------------------------------------------+
| user             | host      | authentication_string                     |
+------------------+-----------+-------------------------------------------+
| root             | localhost | *26A6ED86B95AE05042D4ECCDF0E168E98C54945E |
| mysql.session    | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys        | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| debian-sys-maint | localhost | *97355F25EA257138F5BDEF4589977998E382BAB0 |
| tbs              | %         | *C1782C76F831D6435F19187FED2B52DA82398D0F |
| david            | %         | *26A6ED86B95AE05042D4ECCDF0E168E98C54945E |
+------------------+-----------+-------------------------------------------+
6 rows in set (0.00 sec)

-- 建议不要修改这四张表,用户权限管理的元数据表
tbs@localhost:[mysql]>desc user;

tbs@localhost:[mysql]>select *  from db \G

tbs@localhost:[mysql]>desc tables_priv;

tbs@localhost:[mysql]>desc columns_priv;

常用权限
SQL语句
存储管理

user中authentication_string是表示的是用户密码,使用的是password函数加密,不可逆的。

用户的资源管理


版权声明:本文为lijuncheng963375877原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/lijuncheng963375877/article/details/120943415