centos 安装mysql, mysql管理员命令 add user, grant, 查看包含字段

CentOS 8 安装 MySql并设置允许远程连接

一、下载mysql5.7安装包

下载地址:https://dev.mysql.com/downloads/mysql/5.7.html

centos 安装mysql, mysql管理员命令 add user, grant, 查看包含字段_第1张图片

二、mysql5.7安装包上传到linux服务器

安装 rz

yum install -y lrzsz

linux服务器根目录下新建文件夹:

  • tools,或 /usr/local/soft/jar.back 文件夹,存放软件安装包
  • /usr/local/soft 文件夹,存放安装后的软件

三、检查系统是否安装过 mysql、 MariaDB, 卸载

rpm -qa | grep mysql 
rpm -qa | grep mariadb
  • 执行卸载 如有mysql 同理 卸载方法相同
rpm -e --nodeps mariadb-libs-5.5.60-1.el7-5.x86_64

  • 如果系统自带mysql,查询所有mysql 对应的文件夹,全部删除
 whereis mysql
 find / -name mysql
  • 删除etc目录下的my.cnf ,一定要删掉,等下再重新建,之前我将就用这个文件,后面改配置各种不生效,因为此目录下没有my.cnf文件,没有执行可命令
五、检查有无安装过mysql 用户组,没有的话创建
  • 检查mysql 用户组是否存在
cat /etc/group | grep mysql
cat /etc/passwd |grep mysql
  • 创建mysql 用户组和用户
groupadd mysql
useradd -r -g mysql mysql
六、安装mysql5.7步骤
  • 解压安装mysql安装包到/usr/local/soft目录下
tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz -C  /usr/local/soft
  • 修改mysql-5.7.36-linux-glibc2.12-x86_64名称为mysql5.7
mv mysql-5.7.36-linux-glibc2.12-x86_64/ mysql5.7
  • 更改mysql5.7 目录下所有文件夹所属的用户组、用户以及权限
chown -R mysql:mysql /usr/local/soft/mysql5.7
chmod -R 755 /usr/local/soft/mysql5.7
  • 进入mysql5.7/bin/目录,编译安装并初始化mysql, 务必记住数据库管理员临时密码
./mysqld --initialize --user=mysql --datadir=/data/db/mysql5.7/data --basedir=/usr/local/soft/mysql5.7
编写 /etc/my.cnf,并添加配置
[client]
#password	= your_password
port		= 3306
socket		= /tmp/mysql.sock

[mysqld]
## skip-grant-tables
port		= 3306
socket		= /tmp/mysql.sock
datadir = /data/db/mysql57/data
default_storage_engine = InnoDB
performance_schema_max_table_instances = 400
table_definition_cache = 400
skip-external-locking
key_buffer_size = 64M
max_allowed_packet = 100G
table_open_cache = 256
sort_buffer_size = 1M
net_buffer_length = 4K
read_buffer_size = 1M
read_rnd_buffer_size = 256K
myisam_sort_buffer_size = 16M
thread_cache_size = 32
query_cache_size = 32M
tmp_table_size = 64M
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

explicit_defaults_for_timestamp = true
#skip-name-resolve
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535

log-bin=mysql-bin
binlog_format=mixed
server-id = 1
expire_logs_days = 10
slow_query_log=1
slow-query-log-file=/data/db/mysql57/log/mysql-slow.log
long_query_time=3
#log_queries_not_using_indexes=on
early-plugin-load = ""


innodb_data_home_dir = /data/db/mysql57/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /data/db/mysql57/data
innodb_buffer_pool_size = 256M
innodb_log_file_size = 128M
innodb_log_buffer_size = 32M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 2
innodb_write_io_threads = 2

[mysqldump]
quick
max_allowed_packet = 500M
user=ltkj
password="Fj!Oc>q5C/>o"

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 64M
sort_buffer_size = 1M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

centos 安装mysql, mysql管理员命令 add user, grant, 查看包含字段_第2张图片

  • 授予my.cnf 配置文件775权限,如下:
chmod -R 775 /etc/my.cnf
  • 启动mysql 服务器

1)、查询服务

ps -ef | grep mysql

ps -ef | grep mysqld

七、添加 systemctl 命令单元

https://my.oschina.net/u/4984817/blog/5543878

环境变量,后面有创建软连接方式
创建软连接、为了避免在使用 MySQL 时总是输入客户端程序的路径名,将/usr/local/mysql/bin 目录添加到PATH变量中
vim /etc/bashrc
在文件头部加上如下代码后
保存退出

vim /etc/bashrc

export PATH=$PATH:/usr/local/mysql/bin 

# 刷新文件,使配置生效
source /etc/bashrc

或者:

ln -s /usr/local/soft/mysql57/bin/mysql    /usr/bin
重启下mysql服务
systemctl restart mysqld.service

查看mysql服务状态

systemctl status mysqld.service
查看下默认的临时密码,我的密码是: >dgp,9q&?ikW
grep 'temporary password' /var/log/mysqld.log

测试登录
mysql -u root -p

然后修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '~1QAZxsw2'

修改允许远程连接

use mysql;
update user set Host = '%' where Host = 'localhost' and User='root';
flush privileges;

开放3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

重启防火墙

firewall-cmd --reload

查看防火墙状态 显示success 即成功开启

systemctl status firewalld

查看指定端口状态 显示 success 即端口成功开启

firewall-cmd --query-port=6379/tcp

配合 my.cnf 之后使用数据库连接工具即可连接成功;

========= 防火墙操作 开放指定端口 ===============

4. 开启端口

zone -- 作用域
add-port=80/tcp -- 添加端口,格式为:端口/通讯协议
permanent -- 永久生效,没有此参数重启后失效

firewall-cmd --zone=public --add-port=3306/tcp --permanent

开启3306端口后,配合my.cnf, workbench或naivcat 就能连接到MySQL数据库了

5. 重启防火墙
firewall-cmd --reload
6. 常用命令介绍

1.firewalld的基本使用

启动: systemctl start firewalld
查状态:systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed

2.配置firewalld-cmd

查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic

3.那怎么开启一个端口呢

添加
firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload # 重新载入,更新防火墙规则
firewall-cmd --zone= public --query-port=80/tcp #查看

删除

firewall-cmd --zone= public --remove-port=80/tcp --permanent # 删除

服务操作

firewall-cmd --list-services
firewall-cmd --get-services
firewall-cmd --add-service=
firewall-cmd --delete-service=
在每次修改端口和服务后/etc/firewalld/zones/public.xml文件就会被修改,所以也可以在文件中之间修改,然后重新加载
使用命令实际也是在修改文件,需要重新加载才能生效。

4.详细使用

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' //设置某个ip访问某个服务
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' //删除配置
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept' //设置某个ip访问某个端口
firewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept' //删除配置

firewall-cmd --query-masquerade # 检查是否允许伪装IP
firewall-cmd --add-masquerade # 允许防火墙伪装IP
firewall-cmd --remove-masquerade # 禁止防火墙伪装IP

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 # 将80端口的流量转发至8080
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口

三、示例:

先查看防火墙是否开启了1521端口:
firewall-cmd --permanent --query-port=1521/tcp
打印结果如下:
no
表示没有开放1521端口,那么添加下该端口:
firewall-cmd --permanent --add-port=1521/tcp
打印结果如下:
success
重新加载防火墙策略:
firewall-cmd --reload
执行成功后,查看1521端口是否被开启:
firewall-cmd --permanent --query-port=1521/tcp
打印结果如下:
yes

八、别人想连接我windows电脑的vmware里的 mysql

https://my.oschina.net/u/4984817/blog/5611658

更多命令,使用 firewall-cmd --help 查看帮助文件

======== mysql 管理命令================

创建用户

主机名中 ip表示只允许某个ip访问 ,%表示所有,localhost表示只允许本地访问

注意某个用户的信息中 用户名和主机名组成了一个用户,同一个用户名不同的主机名组成的是不同的用户

create user ‘用户名’@‘主机名’ identified by ‘password’;

create user 'username'@'%' identified by 'password';

可能会遇到密码强度问题:
mysql修改密码报错:Your password does not satisfy the current policy requirements
解决办法:

1、查看 mysql 初始的密码策略,
输入语句 “ SHOW VARIABLES LIKE ‘validate_password%’; ” 进行查看,

2、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
输入设值语句 “ set global validate_password_policy=LOW; ” 进行设值,

3、当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,
输入设值语句 “ set global validate_password_length=6; ” 进行设值,

4、现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,
输入修改语句 “ ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123456’; ” 可以看到修改成功,表示密码策略修改成功了!!!

注:在默认密码的长度最小值为 4 ,由 大/小写字母各一个 + 阿拉伯数字一个 + 特殊字符一个,
只要设置密码的长度小于 3 ,都将自动设值为 4 ,

关于 mysql 密码策略相关参数;
1)、validate_password_length 固定密码的总长度;
2)、validate_password_dictionary_file 指定密码验证的文件路径;
3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;

关于 validate_password_policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;


删除用户  delete from mysql.user WHERE host=’hostname’ AND user=’username’;



可以看出,user2用户已经被删除

由于直接对user表操作,执行完命令之后,需要使用
FLUSH PRIVILEGES 语句,重新加载用户权限

————————————————

修改用户名

例:把用户名root修改为xiaoming

update `mysql`.`user` set user="xiaoming" where user="root";

flush privileges;

修改密码

alter user 'xiaoming'@'localhost' identified by '123456';

flush privileges;

在这里,我决定创建一个mysql用户“bird”,我想只为db“bird_test”的特定表提供访问权限.

那么,我可以知道如何为MYSQL中的用户授予特定的表perm吗?

解决方法:

首先 上面创建了用户

GRANT USAGE ON *.* TO bird@'localhost' IDENTIFIED BY 'whateverpassword';

仅授予对bird_test数据库中siteindex表的SELECT权限

GRANT SELECT ON bird_test.siteindex TO bird@'localhost';

仅授予对bird_test数据库中whois1表的SELECT权限

GRANT SELECT ON bird_test.whois1 TO bird@'localhost';

授予bird_test数据库中每个表的所有权限

GRANT ALL PRIVILEGES ON bird_test.* TO bird@'localhost';

centos 安装mysql, mysql管理员命令 add user, grant, 查看包含字段_第3张图片

撤销用户权限 REVOKE

用户对某个数据库的全部权限
mysql> REVOKE ALL PRIVILEGES ON database_name.* FROM 'user_name'@'host';

注:关键字 privileges 可以省略。

撤销用户对某个数据库的部分权限
例如,收回用户对某个数据库的插入、更新、删除的权限:

mysql> REVOKE INSERT, UPDATE, DELETE ON database_name.* FROM 'user_name'@'host';

撤销用户对某个数据库的某张表的部分权限
例如,收回用户对某个数据库的某个表的插入、更新、删除的权限:

mysql> REVOKE INSERT, UPDATE, DELETE ON database_name.table_name FROM ‘user_name’@‘host’;
1
撤销用户对任何数据库的任何表的部分权限
例如,收回用户查询表数据的权限(注:任何数据库的任何表都不能查询):

mysql> REVOKE SELECT ON . FROM ‘user_name’@‘host’;
1
撤销 WITH GRANT OPTION 权限
必须使用下面的语句才能撤销 WITH GRANT OPTION 权限:

mysql> revoke all privileges,grant option from 'user_name'@'host';

注:关键词 privileges 可以省略掉。

权限表

撤销权限的巨坑

撤销语句要和授权语句完全一致

假如你给用户 pig@% 授权的语句如下:

mysql> GRANT SELECT ON test.user TO 'pig'@'%';

那么使用如下的语句,根本无法撤销上述的查询权限(即不能撤销该用户对 test 数据库中 user 表的 SELECT 操作权限):

mysql> REVOKE SELECT ON *.* FROM 'pig'@'%';

而且使用下面的语句,还会报错:

mysql> REVOKE SELECT ON test.* FROM 'pig'@'%';
ERROR 1141 (42000): There is no such grant defined for user 'pig' on host '%'

同样地,如果你使用下面的语句给用户 pig@% 授权:

GRANT SELECT ON *.* TO 'pig'@'%';

那么使用下面的语句,根本无法撤销该用户对 test 数据库中 user 表的 SELECT 权限:

REVOKE SELECT ON test.user FROM 'pig'@'%';
注: USAGE 权限是无法撤销的

———————————————

授权:

GRANT ALL PRIVILEGES ON bird_test.* TO 'birdtest'@'%';
flush PRIVILEGES;

show grants for 'birdtest';

centos 安装mysql, mysql管理员命令 add user, grant, 查看包含字段_第4张图片

REVOKE ALL PRIVILEGES ON *.* FROM 'birdtest'@'%';
flush privileges;

show grants for 'birdtest';
或  show grants for 'birdtest'@'%'; 
结果为: GRANT USAGE ON *.* TO 'birdtest'@'%'
时

centos 安装mysql, mysql管理员命令 add user, grant, 查看包含字段_第5张图片

只剩USAGE,意味着无权限。

mysql 查询哪些表中含有 xx字段
SELECT DISTINCT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME IN ('space_id')
AND TABLE_SCHEMA='bird'  ;

你可能感兴趣的:(centos,mysql,adb)