当前位置: 首页 > 编程日记 > 正文

【MySQL笔记】mysql来源安装/配置步骤和支持中国gbk/gb2312编码配置

不久的学习笔记。分享。我想有很大的帮助谁刚开始学习其他人的

备注:该票据于mysql-5.1.73版本号例如

1. mysql源代码编译/安装步骤

1) 官网下载mysql源代码并解压
2) cd至源代码文件夹。运行

./configure  --prefix=/home/slvher/tools/mysql-5.1.73 --with-charset=gbk --with-charset=gb2312 --with-extra-charsets=all --with-plugins=max-no-ndb
      备注:
       --prefix指定安装文件夹,需依据实际情况改动
       --with-charset指定默认支持的字符集,可指定多个(若须要数据库支持中文简体,请务必指定gbk和gb2312,至少要指定1个
       --with-plugins指定安装innodb引擎(从mysql5.1版本号開始须要手动指定,之前则是默认安装的)
3) 查看Makefile文件。确认几个基本配置无误后,运行
   shell> makeshell> make install
备注1install失败是由第2步运行./configure时參数指定错误所致,则需又一次运行./configure且务必运行make clean后。再又一次make && make install。

若不先make clean直接make,则源代码文件夹下上次编译完的部分文件不会又一次编译,而这些上次编译的文件使用的还是上次的错误配置參数!


        备注2:安装完毕后,cd至mysql安装文件夹(通过--prefix指定的路径或默认的系统路径),能够看到bin/include/lib之类的文件夹,这表明二进制文件成功安装
4) 从源代码文件夹的support-files文件夹拷贝my-medium.cnf(共同拥有small/medium/large三个level。依据机器配置选择合适的)配置至~/.my.cnf文件,并配置相关參数。mysql server启动时会读取该文件的配置,关于mysql对my.cnf文件的搜索路径,能够查看官方的mysql-refman文档。


        备注:my.cnf配置不当可能会引起mysql报错,比如"mysql: unknown variable 'character-set-server=utf8'",该问题解决方法參见这里
5) 在mysql安装文件夹先后运行例如以下命令以便安装权限表及默认数据库
 ./bin/mysql_install_db --basedir=/home/slvher/tools/mysql-5.1.73 --datadir=/home/slvher/tools/mysql-5.1.73/db-data./bin/mysql_install_db --user=slvher
6) 在mysql安装文件夹运行例如以下命令启动mysqld: 
./bin/mysqld_safe &
7) 运行ps -x查看mysqld是否启动成功,当中d表示守护模式。因此。正常的关闭mysqlserver的方法应该是以下的命令:
./bin/mysqladmin shutdown -uroot -p
       然后输入rootpassword就可以停掉mysqld进程,若强行kill -9杀进程可能会导致数据库损坏!
8) 将mysql运行路径增加PATH变量的搜索路径
       
至此,支持中文gbk和gb2312的mysql server安装完毕。可运行下面命令验证其支持的字符集
   shell> mysql -uroot  mysql> show character set;
     备注1:新安装的mysql server。root默认password为空
     备注2:若在第2步运行./configurer时通过--with-charset參数指定了gbk或gb2312,则show的输出应该能看到这些字符集,否则,就准备又一次安装一遍吧 -_-

2. 安装完毕并启动mysqld_safe后的訪问权限配置

1) 设定mysql server的rootpassword
        rootpassword默觉得空(因此,执行mysql -uroot可直接登录。此外,登录后执行"select User, Host, Password from mysql.user"能够看到root的Password那个字段为空)。所以须要设定rootpassword,方法有几种:
        a. 使用set password语句:

      shell> mysql -u rootmysql> set password for 'root'@'localhost' = PASSWORD('xxx');  # 当中xxx为新密码mysql> set password for 'root'@'host_name' = PASSWORD('xxx');  # 当中host_name为机器名  mysql> set password for 'root'@'127.0.0.1' = PASSWORD('xxx');
         b. 使用update语句:
      shell> mysql -u rootmysql> update mysql.user set Password = PASSWORD('xxx') where User = 'root';mysql> flush privileges;  # 该语句会让mysql server又一次读取权限表
         若root相应的Host字段有多个。则推荐使用这样的方法指定rootpassword,由于它明显更简洁。
         c. 使用mysqladmin工具:
      shell> mysqladmin -u root password "xxx" shell> mysqladmin -u root -h host_name passord "xxx"
         这样的方法无法设定形如'root'@'127.0.0.1'的root新密码,故个人认为用处不大。
         注意:新安装的mysql server默认同意本机匿名用户登录,若不须要。最好删除匿名用户。

2) 加入新用户并授权
        因为root权限过大,有必要为mysql加入normal user并设定其权限。可通过下面步骤实现(如果已登录了mysql server所在机器):

      shell> mysql -u root -pxxx  # 注意-p与password(如果为"xxx")间无空格。可省去输入password的交互过程mysql> create user work;mysql> grant select on db1.test_table to 'user'@'localhost' identified by 'xxx';
        上述grant语句运行效果:从localhost登录的user必须用xxxpassword才干登录成功。且仅仅能訪问数据库db1的test_table表。
        若要为从localhost登录的user授权对全部库全部表的全部操作权限,则可运行例如以下命令:
      mysql> grant all privileges on *.* to 'user'@'localhost' identified by 'xxx';
若为远程登录的用户授权(对db1.test_table的select/insert权限),则需运行以下的命令:
      mysql> grant select, insert on db1.test_table to 'user'@'%' identified by 'xxx';
        上述语句中的'%'表示随意主机,因此能够覆盖远程登录的情况。
        注意1:有时对远程登录用户授权时会发现,即使运行了上述命令,用户依旧无法远程登录。

这样的情况通常是因为该username首先命中了权限表的某条不支持远程登录的记录(如不同意来自某个IP地址的用户登录)。排查问题时,可运行select User, Host, Password from mysql.user where User = 'user'以查看user用户眼下拥有的权限,定位其是否具有从随意机器登录的权限或是否某个记录明白指定了user用户不能从某台特定的机器登录。


        注意2:有时完毕远程用户登录设置后会发现,远程登录正常,而本地通过-h localhost 或 -h 127.0.0.1登录时却无法成功,这通常是因为同意本机匿名用户无password登录造成的(mysql server默认同意匿名登录)。仅仅需删除匿名用户的登录权限就可以。

【參考资料】
1. mysql reference manual
2. mysql: unknown variable 'character-set-server=utf8'解决方法

========================= EOF ==========================


版权声明:本文博客原创文章,博客,未经同意,不得转载。

相关文章:

预告|开源操作系统年度技术会议

本次会议的主会场设在麒麟软件(北京),由于疫情原因,为尽量减少讲师和参会人员因疫情带来的出行不便,我们同时在北京、上海和深圳设置三个线下交流的分会场。 有部分讲师和圈内大咖将会在三个分会场与大家面对面交流&a…

“智享未来 知行合一”,开为科技AI产品发布会于2月6日召开

届时,开为科技将展示系列装有自研人脸识别算法的人工智能硬件产品,包括人证比对一体机、人脸识别双面闸机、人脸访客广告机等。 过去一年,人工智能的新闻铺天盖地,发展速度之快让人目不暇接,各大巨头纷纷布局&#xf…

linux下history(历史)命令用法详解

如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率。本文将通过实例的方式向你介绍 history 命令的15个用法。1. 使用 HISTTIMEFORMAT 显示时间戳当你从命令行执行 history 命令后,通常只会显示已执…

js获取当前页面的URL信息

2019独角兽企业重金招聘Python工程师标准>>> window.location属性 描述 hash 设置或获取 href 属性中在井号“#”后面的分段。 host 设置或获取 location 或 URL 的 hostname 和 port 号码。 hostname 设置或获取 location 或 URL 的主机名称部分。 href 设置或获取…

超前探秘首个国产元宇宙百度“希壤”:率先实现10万人同屏互动

12月21日,百度发布的首个国产元宇宙产品“希壤”正式开放定向内测,用户凭邀请码可以进入希壤空间进行超前体验。百度方面表示,12月27日“希壤”将面向所有用户开放,届时百度Create 2021(百度AI开发者大会)将…

什么是跨域?怎么解决跨域问题?

什么是跨域? 跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。 所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子&#…

mysql 使用位运算

如果你不知道什么是位运算的话, 那么请你先去看看基础的C语言教程吧。 与运算 a & b , 或运算 a | b , 异或运算 a ^ b ,或者 你也可以将 与运算理解为 法 例如 1|2 3 (12 3) 1|2|4 7 (124 7)将 异…

轻松抓鸡蛋、剪纸、夹芯片,这只“机械爪”堪比人手!

作者 | 学术头条来源 | 学术头条如果机器手能执行与人手一样的功能,那在执行任务时就可拥有高度的灵活性。然而,在保持人手般灵巧度和抓握力等重要功能的同时,开发无需额外驱动部件的集成机器手是一项挑战。因为驱动部件使得这些机器手很难集…

Js_Span 滑动手型鼠标样式

<span style"cursor: pointer;">搜索</span> 为了可以更灵活控制. 使用span布局 加上滑动手型鼠标样式. 配合JS各种自定义按钮样式. ZhLingF W转载于:https://www.cnblogs.com/may26/p/4689219.html

No.6 PHP的基本配置与优化

PHP下载http://www.php.net/downloads.php安装yum -y install libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel libxslt-devel gcc gcc-copenssl-develtar xf php-7.2.3.tar.bz2 -C /tmp./configure --prefix/usr/local/php --with-curl --with-freety…

php连接Mysql

<?php echo "This is a test</br>"; echo "asdfasdfadsf"; $mysql_server_name"localhost:3306"; //数据库服务器名称 $mysql_username"root"; // 连接数据库用户名 $mysql_password"rootpass"; // 连…

谁是 2021「IT 圈」年度 C 位?快来报名,彰显你的影响力!

2021年&#xff0c;数字化转型正磅礴兴起&#xff0c;大批传统企业正在拥抱数字化&#xff0c;云计算、大数据、AI、5G应用能力正在变成企业的核心竞争力&#xff1b;核心技术正在崛起&#xff0c;在操作系统、数据库&#xff0c;依靠开源的力量&#xff0c;众多开发者背后的行…

为什么Scrum模式适合软件开发?

2019独角兽企业重金招聘Python工程师标准>>> 摘自基于Visual Studio 2010 进行敏捷/Scrum模式开发 软件行业至今已经有超过40年的历史&#xff0c;很多在软件工程中的管理方法都是在不断摸索中改进而来的。早期的软件行业由于规模有限&#xff0c;绝大多数属于作坊型…

一分钟了解 TCP/IP 模型

原文讲的不是特别细&#xff0c;为了便于理解&#xff0c;我颠倒了顺序。写在开始 我们需要知道协议到底是什么。 在网络上&#xff0c;一个协议对应于管理系统之间如何相互通信的规则。然后我们需要知道什么是协议族。 一个协议族是一系列协同工作的协议的集合。什么是 TCP/IP…

网站流量UV是什么意思?什么是流量UV/PV/IP

雅虎统计基础数据定义PV(访问量)&#xff1a; 即Page View, 即页面浏览量或点击量&#xff0c;用户每次刷新即被计算一次。 UV(独立访客)&#xff1a; 即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。IP(独立IP)&#xf…

摇橹船以“硬科技+人工智能”助推高质量发展

12月13日和14日&#xff0c;2021雷克大会暨智能经济年会在线上成功举办&#xff0c;大会得到了专业观众和行业媒体的广泛关注&#xff0c;全网累计数万人次在线观看直播。 本届大会聚焦产业智能化、智能基础设施、智能产业化和机器人产业发展助力智能经济等议题。专家学者和企…

一句话的设计模式(转)

如题&#xff0c;实际上&#xff0c;我想这是很困难的。 除非——只是为了给自己做一个提醒&#xff0c;能够看一眼就快速回想起该设计模式的种种记忆。 下列是我之前在学习《大话设计模式》时做的笔记总结&#xff0c;当中有部分措辞来自其作者程杰。&#xff08;非常感谢他为…

高性能ORM框架XLinq功能详细介绍

之前简单介绍了XLinq的一些功能&#xff0c;有很多功能都没有提到&#xff0c;现在给XLinq加了一些功能&#xff0c;这次把所有功能都介绍一遍。 设计目标 易用性 在使用一个框架的时候 应该没几个人会喜欢写一大堆的配置文件吧 也应该没几个人会喜欢为了完成一个小功能却需要写…

太好玩了,爬虫、部署API、加小程序,一条龙玩转知乎热榜!

作者 | 周萝卜来源 | 萝卜大杂烩一直想做一个从爬虫到数据处理&#xff0c;到API部署&#xff0c;再到小程序展示的一条龙项目&#xff0c;最近抽了些时间&#xff0c;实现了一个关于知乎热榜的&#xff0c;今天就来分享一下&#xff01;数据爬取首先我们看下需要爬取的知乎热榜…

linux的more 命令

名称&#xff1a;more 使用权限&#xff1a;所有使用者 使用方式&#xff1a;more [-dlfpcsu] [-num] [/pattern] [linenum] [fileNames..] 说明&#xff1a;类似 cat &#xff0c;不过会以一页一页的显示方便使用者逐页阅读&#xff0c;而最基本的指令就是按空白键&#xff08…

20155222卢梓杰 实验三 免杀原理与实践

实验三 免杀原理与实践 1.正确使用msf编码器&#xff0c;msfvenom生成如jar之类的其他文件&#xff0c;veil-evasion&#xff0c;自己利用shellcode编程等免杀工具或技巧 实验步骤如下 1.先对实验二中生成的exe进行检测 65款杀毒软件有36款认为不安全 39款杀毒软件有6款认为不安…

Linux wc命令详解

通常利用Linux的wc命令和其他命令结合来计算行和其他信息。在Linux下用wc进行计数。返回文件的行数、字数、字节数等。看个例子&#xff1a;wc wc1.txt3 5 16 wc1.txt输出信息依次是&#xff1a;行数 字数 字节数 文件名称。再具体点&#xff0c;单个统计。#wc -m filename&…

(剑指Offer)面试题54:表示数值的字符串

题目&#xff1a; 请实现一个函数用来判断字符串是否表示数值&#xff08;包括整数和小数&#xff09;。例如&#xff0c;字符串"100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14"…

「动手学深度学习」在B站火到没谁,加这个免费实操平台,妥妥天花板!

论 AI 圈活菩萨&#xff0c;非李沐老师莫属。前有编写「动手学深度学习」&#xff0c;成就圈内入门经典&#xff0c;后又在B站免费讲斯坦福 AI 课&#xff0c;一则艰深硬核讲论文的视频播放量36万&#xff0c;不少课题组从导师到见习本科生都在追番。如此给劲的分享&#xff0c…

spring-redis-data的一个坑

事故原因&#xff1a; 运维报告redis内存直线上升&#xff0c;然后查询发现都是setrange操作&#xff0c;review代码&#xff0c;没法发现setrange操作 代码如下&#xff1a; redisTemplate.opsForValue().set(groupidxxxResult.getSeriesNo(), JSON.toJSONString(xxxRquestDTO…

Linux如何搜索文件的方法

#whereis 查找已经安装的软件 在Linux上查找某个文件是一件比较麻烦的事情。毕竟在Linux中需要我们使用专用的“查找”命令来寻找在硬盘上的文件。 Linux下的文件表达格式非常复杂&#xff0c;不象WINDOWS,DOS下都是统一的AAAAAAA.BBB格式 那么方便查找&#xff0c;在WINDOWS中…

python socket编程

python 编写server的步骤&#xff1a;1.第一步是创建socket对象。调用socket构造函数。如&#xff1a;socket socket.socket( family, type )family参数代表地址家族&#xff0c;可为AF_INET或AF_UNIX。AF_INET家族包括Internet地址&#xff0c;AF_UNIX家族用于同一台机器上的…

AI 语言模型真的是越大越好吗?这个模型优于 Gopher

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 近年来对于 AI 语言模型的有一个争议就是 —— 越大越好。 DeepMind 正在质疑这个理由&#xff0c;并表示给 AI 一个记忆可以帮助与它 25倍大小的模型竞争。 去年 6 月&#xff0c;OpenAI 发布 GPT-3 模…

[20180412]订阅+镜像切换

订阅镜像切换 主数据库挂了之后&#xff0c;镜像数据库没挂&#xff0c;那么就需要把镜像数据库设置成主数据库。1.修改主机名&#xff0c;改成和主数据库一样的&#xff0c;重启2.修改数据库中的主机名IF SERVERPROPERTY(ServerName)<>SERVERNAMEBEGINDECLARE srvname s…

【Cocos2d开发】Cocos2d下安卓环境的搭建

在进行Cocos2d游戏开发前 我们先来配置一下环境&#xff0c;我们先来准备一下工具&#xff0c;我们所需要的工具分别为&#xff1a;1.Cocos2d引擎2.JDK3.SDK4.NDK5.ANT6.ADT1.下载Cocos2d-x引擎&#xff0c;目前最新版本为3.6&#xff0c;本教程的所有例子以3.4版本为例&#x…