首页
归档
时光轴
推荐
Cloud
图床
导航
Search
1
openstact 基础环境安装 (手动版)
558 阅读
2
Deploy OpenStack offline based on Kolla
438 阅读
3
Typecho 1.2.0 部署
409 阅读
4
Mariadb 主从复制&读写分离
381 阅读
5
FusionCompute8.0 体验
305 阅读
Python
Linux
随笔
mysql
openstack
Search
标签搜索
linux
Pike
python
爬虫
openstack
mysql
Essay
Ansible
docker
Zabbix
kolla
Internet
Redis
1+X
Hyper-V
jenkins
Kickstart
自动化
sh
Acha
累计撰写
76
篇文章
累计收到
1
条评论
首页
栏目
Python
Linux
随笔
mysql
openstack
页面
归档
时光轴
推荐
Cloud
图床
导航
搜索到
76
篇与
Acha
的结果
2021-04-02
MySQL 用户和权限管理
用户和权限管理 用户作用 登录mysql 管理mysql 用户定义 用户名@'白名单' 写法: wordpress@'%' wordpress@'localhost' wordpress@'127.0.0.1' wordpress@'10.0.0.%' wordpress@'10.0.0.5%' wordpress@'10.0.0.0/255.255.254.0' wordpress@'10.0.%' 用户管理 创建用户 mysql> create user ac@'10.0.0.%' identified by 'sa'; 说明:8.0以前,可以自动创建用户并授权 mysql> grant all on *.* to ac@'10.0.0.%' identified by 'sa'; 查询用户 mysql> select user,host from mysql.user; 修改用户密码 mysql> alter user ac@'10.0.0.%' identified by 'sa'; 删除用户 mysql> drop user ac@'10.0.0.%' ; 权限管理 权限列表 ALL SELECT,INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE 授权命令 例:grant all on *.* to ac@'10.0.0.%' identified by 'sa' with grant option; 说明:grant [权限] on [作用目标] to [用户] identified by [密码] with grant option 授权需求 创建一个管理员用户root,可以通过10网段,管理数据库. grant SELECT,INSERT, UPDATE, DELETE on wordpress.* to wordpress@'10.0.0.%' identified by '123'; 创建一个应用用户wordpress,可以通过10网段,wordpress库下的所有表进行SELECT,INSERT, UPDATE, DELETE. grant SELECT,INSERT, UPDATE, DELETE on wordpress.* to wordpress@'10.0.0.%' identified by '123'; 权限回收 show grants for wordpress@'10.0.0.%'; mysql> revoke delete on wordpress.* from 'wordpress'@'10.0.0.%'; mysql> show grants for wordpress@'10.0.0.%'; MySQL 的启动和关闭 正常启停 sys -v mysql.server start ---> mysqld_safe ---> mysqld system mysql.service ---> mysqld 需要依赖于 /etc/my.cnf 维护 mysqld_safe 例:修改密码mysqld_safe --skip-grant-tables --skip-networking & 将参数临时加到命令行,命令行的优先级高 初始化配置 初始化作用 影响数据库的启动 影响到客户端的功能 初始化方法 初始化配置文件(例如/etc/my.cnf) 启动命令行上进行设置(例如:mysqld_safe mysqld) 预编译时设置(仅限于编译安装时设置) 配置文件格式 [标签] xxx=xxx [标签] xxx=xxx 标签归类 服务器端: [mysqld] [mysqld_safe] [server] 客户端: [mysql] [mysqladmin] [mysqldump] [client] 模板文件 (5.7) # 服务器端配置 [mysqld] # 用户 user=mysql # 软件安装目录 basedir=/application/mysql # 数据路径 datadir=/data/mysql/data # socket文件位置 socket=/tmp/mysql.sock # 服务器id号 server_id=6 # 短口号 port=3306 # 客户端配置 [mysql] # socket文件位置 socket=/tmp/mysql.sock 配置文件读取顺序 查询: mysqld --help --verbose |grep my.cnf /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 强制使用自定义配置文件 --defautls-file [root@db01 tmp]# mysqld_safe --defaults-file=/tmp/aa.txt & MySQL的连接管理 mysql连接命令 注意:提前应该将用户授权做好 # 授权 mysql> grant all on *.* to root@'10.0.0.%' identified by '123'; # TCPIP mysql -uroot -p -h 10.0.0.51 -P3306 # Socket mysql -uroot -p -S /tmp/mysql.sock 客户端工具 dbforger sqlyog navicat
2021年04月02日
128 阅读
0 评论
0 点赞
2021-04-01
MySQL 体系结构
内容介绍: C/S 结构 实例构成 SQL语句分类 三层结构 逻辑存储结构 物理存储结构 innodb(段页区) C/S 结构 连接方式: TCP/IP mysql -u [用户名] -p [密码] -h [主机] -P [端口] Socket mysql -u [用户名]-p [密码] -S /tmp/mysql.sock 实例构成 mysqld + master thread + 干活的Thread + 预分配的内存 守护进程 主进程 进程 内存 SQL语句 结构化的查询语言 DQL 数据查询语言 DDL 数据定义语言 DML 数据操作语言 DCL 数据控制语言 例如:mysql> select user,host from mysql.user; 三层结构 连接层 连接协议 - Socket - TCP/IP 验证用户名(root@localhost)密码合法性,进行授权表匹配 派生一个专用连接线程(接收SQL,返回结果) SQL层 验证SQL语法和SQL_MODE 验证语义 验证权限 解析器进行语句解析,生成执行计划(解析树) 优化器(各种算法,基于执行代价),根据算法,找到代价最低的执行计划 CUP IO MEM 执行器按照优化器选择执行计划,执行SQL语句,得出获取数据的方法 提供query cache(默认关闭),一般不开,会用redis 记录操作日志(binlog),默认关闭 存储引擎层 与物理硬件交互 根据SQL层提供的取数据的方法;获取数据返回给SQL;结构化成表,连接层线程返回给用户 逻辑存储结构 库 表 列 数据行 表属性 物理存储结构 库:使用 FS 上的目录来表示 表: MyISAM(ext2) user.frm : 存储的表结构(列,列属性) user.MYD : 存储的数据记录 user.MYI : 存储索引 InnoDB(XFS) time_zone.frm : 存储的表结构(列,列属性) time_zone.ibd : 存储的数据记录和索引 ibdata1 : 数据字典信息 innodb(段页区) 区:16K 页:64个区组成,大小为1M 段:多个连续的页组成(分区表除外)
2021年04月01日
130 阅读
0 评论
0 点赞
2021-03-31
爬取51job岗位信息
提示:岗位链接的xpath表达式会经常变更 # coding=utf-8 """ 时间:2020/11/13 作者:wz 功能:使用python爬虫爬取51job岗位信息 """ import requests from lxml import etree from urllib import parse import time def get_html(url, encoding='utf-8'): """ 获取每一个 URL 的 html 源码 : param url:网址 : param encoding:网页源码编码方式 : return: html 源码 """ # 定义 headers headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Mobile Safari/537.36'} # 调用 requests 依赖包的get方法,请求该网址,返回 response response = requests.get(url, headers=headers) # 设置 response 字符编码 response.encoding = encoding # 返回 response 的文本 return response.text def crawl_each_job_page(job_url): # 定义一个 job dictionary job = {} # 调用 get_html 方法返回具体的html文本 sub_response = get_html(job_url) # 将 html 文本转换成 html sub_html = etree.HTML(sub_response) # 获取薪资和岗位名称 JOB_NAME = sub_html.xpath('//div[@class="j_info"]/div/p/text()') if len(JOB_NAME) > 1: job['SALARY'] = JOB_NAME[1] job['JOB_NAME'] = JOB_NAME[0] else: job['SALARY'] = '##' job['JOB_NAME'] = JOB_NAME[0] # 获取岗位详情 FUNC = sub_html.xpath('//div[@class="m_bre"]/span/text()') job['AMOUNT'] = FUNC[0] job['LOCATION'] = FUNC[1] job['EXPERIENCE'] = FUNC[2] job['EDUCATION'] = FUNC[3] # 获取公司信息 job['COMPANY_NAME'] = sub_html.xpath('//div[@class="info"]/h3/text()')[0].strip() COMPANY_X = sub_html.xpath('//div[@class="info"]/div/span/text()') if len(COMPANY_X) > 2: job['COMPANY_NATURE'] = COMPANY_X[0] job['COMPANY_SCALE'] = COMPANY_X[1] job['COMPANY_INDUSTRY'] = COMPANY_X[2] else: job['COMPANY_NATURE'] = COMPANY_X[0] job['COMPANY_SCALE'] = '##' job['COMPANY_INDUSTRY'] = COMPANY_X[1] # 设置来源 job['FROM'] = '51job' # 获取ID job_url = job_url.split('/')[-1] id = job_url.split('.')[0] job['ID'] = id # 获取岗位描述 DESCRIPTION = sub_html.xpath('//div[@class="c_aox"]/article/p/text()') job['DESCRIPTION'] = "".join(DESCRIPTION) # 打印 爬取内容 print(str(job)) # 将爬取的内容写入到文本中 # f = open('D:/51job.json', 'a+', encoding='utf-8') # f.write(str(job)) # f.write('\n') # f.close() # main 函数启动 if __name__ == '__main__': # 输入关键词 key = 'python' # 编码调整 key = parse.quote(parse.quote(key)) # 提示开始 print('start') # 默认访问前3页 for i in range(1, 4): # 初始网页第(i)页 page = 'https://search.51job.com/list/080200,000000,0000,00,9,99,' + str(key) + ',2,' + str(i) + '.html?lang=c&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=' # 调用 get_html 方法返回第 i 页的html文本 response = get_html(page) # 使用 lxml 依赖包将文本转换成 html html = etree.HTML(response) # 获取每个岗位的连接列表 sub_urls = html.xpath('//div[@class="list"]/a/@href') # 判断 sub_urls 的长度 if len(sub_urls) == 0: continue # for 循环 sub_urls 每个岗位地址连接 for sub_url in sub_urls: # 调用 crawl_each_job_page 方法,解析每个岗位 crawl_each_job_page(sub_url) # 睡 3 秒 time.sleep(3) # 提示结束 print('end.')
2021年03月31日
166 阅读
0 评论
0 点赞
2021-03-31
批量修改文件名
经常从网盘上下载一些资料,大多都是从某论坛上流出来的 就会被加上一些牛皮癣广告,看着不舒服,就想删掉 一条一条删太麻烦,后来就用python写了个脚本 今天,改了改了,分享出来 这个还有完善的余地,后面可加一下正则表达式,估计效果会好一点
2021年03月31日
159 阅读
0 评论
0 点赞
2021-03-28
mysql 5.7 二进制安装
二进制 安装 下载并上传软件至 /server/tools [root@db01 ~]# mkdir -p /server/tools [root@db01 ~]# cd /server/tools/ [root@db01 /server/tools]# yum install -y lrzsz [root@db01 /server/tools]# ls mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz 解压软件 [root@db01 /server/tools]# tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz [root@db01 ~]# mkdir /application [root@db01 /server/tools]# mv mysql-5.7.26-linux-glibc2.12-x86_64 /application/mysql 创建用户 处理原始环境 [root@db01 ~]# yum remove mariadb-libs-5.5.60-1.el7_5.x86_64 -y [root@db01 ~]# rpm -qa |grep mariadb [root@db01 ~]# useradd -s /sbin/nologin mysql 设置环境变量 vim /etc/profile export PATH=/application/mysql/bin:$PATH [root@db01 ~]# source /etc/profile [root@db01 ~]# mysql -V mysql Ver 14.14 Distrib 5.7.26, for linux-glibc2.12 (x86_64) using EditLine wrapper 创建数据路径并授权 添加一块新磁盘模拟数据盘 格式化并挂载磁盘 [root@db01 ~]# mkfs.xfs /dev/sdc [root@db01 ~]# mkdir /data [root@db01 ~]# blkid [root@db01 ~]# vim /etc/fstab [root@db01 ~]# UUID="b7fde522-aa37-412a-9584-8313a673c5cc" /data xfs defaults 0 0 [root@db01 ~]# mount -a [root@db01 ~]# df -h 授权 chown -R mysql.mysql /application/* chown -R mysql.mysql /data 初始化数据(创建系统数据) 5.6 版本 /application/mysql/scripts/mysql_install_db 5.7 版本 正常版 [root@db01 ~]# mkdir /data/mysql/data -p [root@db01 ~]# chown -R mysql.mysql /data [root@db01 ~]# mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data 说明: --initialize 参数: 对于密码复杂度进行定制:12位,4种 密码过期时间:180 给root@localhost用户设置临时密码 报错: mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 解决: ```linux [root@db01 ~]# yum install -y libaio-devel [root@db01 ~]# mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data2019-06-13T04:21:27.706564Z 1 [Note] A temporary password is generated for root@localhost: =mrV)_16is4U - 无限制版 --initialize-insecure 参数: 无限制,无临时密码 ```linux [root@db01 /data/mysql/data]# \rm -rf /data/mysql/data/* [root@db01 ~]# mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data 配置文件的准备 cat >/etc/my.cnf <<EOF [mysqld] user=mysql basedir=/application/mysql datadir=/data/mysql/data socket=/tmp/mysql.sock server_id=6 port=3306 [mysql] socket=/tmp/mysql.sock EOF 启动数据库 sys -v [root@db01 /etc/init.d]# cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld [root@db01 /etc/init.d]# service mysqld restart systemd 注意: sysv方式启动过的话,需要先提前关闭,才能以下方式登录 cat >/etc/systemd/system/mysqld.service <<EOF [Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE = 5000 EOF 无法启动 without updating PID 类似错误 查看日志: 在哪? /data/mysql/data/主机名.err [ERROR] 上下文 可能情况: /etc/my.cnf 路径不对等 /tmp/mysql.sock文件修改过 或 删除过 数据目录权限不是mysql 参数改错了 密码设置 管理员密码的设定(root@localhost) [root@db01 ~]# mysqladmin -uroot -p password oldboy123 Enter password: 忘记密码 参数: --skip-grant-tables #跳过授权表 --skip-networking #跳过远程登录 关闭数据库 [root@db01 ~]# /etc/init.d/mysqld stop Shutting down MySQL.. SUCCESS! 启动维护模式 [root@db01 ~]# mysqld_safe --skip-grant-tables --skip-networking & 登录并修改密码 mysql> alter user root@'localhost' identified by '1'; ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement mysql> flush privileges; mysql> alter user root@'localhost' identified by '1'; Query OK, 0 rows affected (0.01 sec) 关闭数据库,正常启动验证 [root@db01 ~]# /etc/init.d/mysqld restart [root@db01 ~]# mysql -u root -p
2021年03月28日
166 阅读
0 评论
0 点赞
1
...
12
13
14
...
16