这篇文章是我们群里的一位朋友()写的。 每一步他都亲自测试。 这是真实的、可靠的、脚踏实地的。 如果你按照它来操作,你就可以开始在Linux下安装MySQL了。 欢迎更多朋友使用。 记录下日常工作中的心得体会并与他人分享。 俗话说:“独乐不如众乐”。
我最近接到一个任务。 由于开发环境的变化,旧机器上的mysql需要迁移到新机器上,这就涉及到在新服务器上安装mysql。 其实我之前在Linux环境下安装过一次,只是当时更忙于解决问题和实现最终的目标,对细节的关注不够。 而且,整个过程虽然借鉴了很多前人的经验,但是每个人的思维方式和关注点都不同,所以这次我详细记录了整个安装过程。 由于这是我第二次尝试安装,很多问题和细节都没有触及,但还是希望能为第一次安装MySQL的新人提供一些参考。
1、安装文件的准备
可以从mysql官网下载。 此安装使用 mysql-5.7.27-linux-.12-.tar。
2.解压文件
要解压该文件,命令是:
tar xvf mysql-5.7.27-linux-glibc2.12-x86_64.tar
命令执行解压后目录如下图:
继续解压文件mysql-5.7.27-linux-.12-.tar.gz,命令为,
tar -xzvf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
解压后目录如下图所示。 红框是mysql文件。
3、软连接
(1)将步骤2截图中红框内的目录(mysql-5.7.27-linux-.12-)软连接到/usr/local/mysql(如果没有该目录则需要创建)你自己)。 指令是,
ln -s mysql-5.7.27-linux-glibc2.12-x86_64 /usr/local/mysql
(2)执行(1)后,检查/usr/local/mysql目录。 效果如下图所示。
然而我发现红框中选择的目标连接持续闪烁。
(3)(2)中所述的连接闪烁问题可以通过修改(1)中的命令来解决,即在命令(1)中写入原始文件的完整路径。
先删除原来的连接,
rm -rf /usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64
新指令如下:
ln -s /opt/app/software/mysql/mysql-5.7.27-linux-glibc2.12-x86_64 /usr/local/mysql/
执行后查看/usr/local/mysql目录如下图所示。
4.创建用户
使用 root 权限创建用户。 说明如下,
groupadd mysql
useradd -g mysql -s /sbin/nologin -d /usr/local/mysql/ -M mysql
5.设置环境变量
设置mysql相关的环境变量。 说明如下:
echo PATH=$PATH:/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/bin /etc/profile
source /etc/profile
6. 创建必要的目录
直接执行以下命令(会在当前服务器根目录下创建目录),
mkdir -p /mysql/3306/{data,tmp,log}
创建目录后,更改所有者。
chown -R mysql:mysql 3306
7.编辑配置文件配置文件f
关于这个配置文件,目前还不清楚以下问题。
(1)首先提供本次安装的f文件内容,
(2)其他安装经验提到这个文件不是必须的,mysql没有这个文件也能正常运行。 关于这一点的理解是mysql有很多默认设置,这些默认设置可以满足一般的使用需求。 不过,由于这个安装和安装的路径“不寻常”,所以必须特别指定,用f指定。 经验还指出,可以通过修改mysql.conf来指定当前机器的总和。 不过由于是通过f指定第一次安装,所以这次还是采用了第一次的思路。 下次需要安装mysql。 它会尝试通过修改mysql的sum来实现这一点。 (修改方法请参考本文步骤8中的描述,如果省略f的配置,则直接进入步骤8)。
(3)这个文件网上有很多模板,通常有多段内容:[]、[]、[]、[]等,但本文配置的是上图所示的两段内容并且可以正常运行。 所以归根结底,应该是mysql默认配置的作用。 本次安装只涉及到和的修改,因此配置文件的内容已经满足需要。 另外,我了解到这个文件在mysql调优的时候会比较有用,所以后面涉及到大量数据或者数据库性能问题的时候可以深入研究这个文件。
8.配置mysql。
cd /usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/support-files
cp mysql.server /etc/init.d/mysqld
要实现7(2)中的描述,需要将这里的文件的sum修改为当前机器的路径)。 这里有问题,也可以在后续安装中解决。 看了很多经验,就抄了mysql。 从 -files 到 /etc/init.d 并修改文件名。 难道不能直接修改使用-files中的文件吗? 为什么必须有一个复制操作到另一个路径呢?
9.初始化数据库
初始化数据库,执行指令并返回结果如下:
/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/ --datadir=/mysql/3306/data/
mysqld: [Warning] World-writable config file '/etc/my.cnf' is ignored.
2020-02-29T11:36:35.006277Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-02-29T11:36:35.417910Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-02-29T11:36:35.499207Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-02-29T11:36:35.570611Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: bdc0f4c7-5ae7-11ea-95b4-fa163e6e78e4.
2020-02-29T11:36:35.574241Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-02-29T11:36:35.574667Z 1 [Note] A temporary password is generated for root@localhost: B-m%;xgH_54d
10.获取密码
初始化数据库时会提供初始密码。 请保存更改后的密码以供以后使用,即上面打印内容的最后一行。
2020-02-29T11:36:35.574667Z 1 [Note] A temporary password is generated for root@localhost: B-m%;xgH_54d
11.启动数据库
成功启动数据库的效果如下图:
[root@localhost]# etc/init.d/mysqld start
Starting MySQL. SUCCESS!
但是在数据库启动的过程中遇到了问题。 问题如下图所示:
[ ]
my_print_defaults: [Warning] World-writable config file '/etc/my.cnf' is ignored.
Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)
起初,在排查问题时,我忽略了提示信息,只关注ERROR错误。 我反复确认配置文件中正确配置了当前机器的mysql目录。 后来看到信息说机器当前的配置是通过/etc/my.conf来实现的。 但是为了方便,我将文件的权限设置为777,导致mysql启动时认为该文件不安全。 然后将该文件的权限修改为644,问题解决。
12.更改root密码
修改密码时出现错误:
[root@localhost]# cd /usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/support-file
[root@localhost]# mysqladmin -uroot -p password 'my25sql2020'
bash: mysqladmin: command not found
出现这个问题的原因是系统默认会在/usr/bin下搜索命令。 如果该命令不在该目录下,则会报错。 找不到该命令。 需要做的就是映射一个链接到/usr/bin目录,即创建软连接。 首先你需要知道mysql命令或者命令的完整路径。 例如,路径是:
/usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/bin/mysqladmin
然后你可以像这样执行命令:
ln -s /usr/local/mysql/mysql-5.7.27-linux-glibc2.12-x86_64/bin/mysqladmin /usr/bin
但是这次使用绝对路径执行成功了(后来觉得这样很麻烦,也不利于别人使用,所以最后还是创建了软连接):
13.解决步骤12中的错误
在第12步的描述中,截图最后有一个错误:
'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'
Check that mysqld is running and that the socket:'/tmp/mysql.sock' exists!
检查了f中配置的路径,=/var/lib/mysql/mysql.sock,该路径下已经存在mysql.sock文件。 但是mysql仍然寻找/tmp/mysql.sock,但没有找到,导致出现上述错误信息。 所以创建软连接来解决这个问题。 指令及结果如下图:
然后继续修改密码,修改成功:
14.登录数据库
成功登录数据库
15. 登录
当尝试使用root帐户登录时,出现错误消息,如下所示:
经过排查,发现mysql没有开启mysql远程访问权限。 我执行了如下语句修改root用户的权限,还是出现同样的错误。
然而,在步骤16中创建的新用户可以成功访问数据库。 从安全角度考虑,root账户权限太大,所以我们没有进一步深究这个问题,收回root权限:user set host='' where user ='root'。
16.创建新用户
17.创建数据库并授权用户
最终的授权也很关键。
此时,您可以通过第三方软件访问数据库,进行增、删、改、查等操作。
事实上,很多问题都是因为只知道是什么而不知道为什么而造成的。 你可能会担心如果在安装过程中错误地更改了某个配置,最终的安装会失败或者消耗太多的时间和成本,但学习技术确实需要时间和精力才更有收获。 如果再次有这样的需要,你应该可以更大胆地研究这些配置文件,或者在以后的使用中尝试修改某个配置,看看它的影响。
MySQL相关历史文章:
近期热门文章:
””
””
””
””
””
””
””
””
””
””
””
””
””
””
””
””
””
扫一扫在手机端查看
-
Tags : mysql mysql创建数据库 软连接
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。