Linux安装mysql
第一步:下载mysql
cd /usr/local/src
下载包:
1 | wget https: //dev.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz |
(或直接从window上传)
解压:
1 | tar zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz |
移动到/usr/local :
1 | mv mysql-5.7.21-linux-glibc2.12-x86_64 /usr/local |
进到/usr/local/目录下:
1 | cd /usr/local |
改名为mysql:
1 | mv mysql-5.7.21-linux-glibc2.12-x86_64 mysql |
然后去到mysql/support-files目录下:
1 | cd mysql/support-files |
第二步:修改参数
1、复制my.cnf 到 /etc/my.cnf (mysqld启动时自动读取)
1 | cp my- default .cnf /etc/my.cnf |
注意:如果你在安装时Linux虚拟机时同时安装了默认的mysql,此时操作以上步骤,终端将会提示你文件已存在是否覆盖,输入yes覆盖即可。
2、配置数据库编码
1 | vi /etc/my.cnf |
在这份文件中可以添加以下配置信息(如果有修改即可)
1 2 3 4 5 6 | [mysql] default -character- set =utf8 [mysqld] default -storage-engine=INNODB character_set_server=utf8 |
3、复制mysql.server 到/etc/init.d/ 目录下【目的想实现开机自动执行效果】
1 | cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql |
(mysql是服务名)
4、修改 /etc/init.d/mysql 参数
1 | vi /etc/init.d/mysql |
给与2个目录位置
1 2 | basedir=/usr/local/mysql datadir=/usr/local/mysql/data |
第三步:创建 mysql 用户 (可跳过)
出于安全便利,创建一个操作数据库的专门用户
1)、建立一个mysql的组
1 | groupadd mysql |
2)、建立mysql用户,并且把用户放到mysql组
1 | useradd -r -g mysql mysql |
3)、给mysql用户设置一个密码
1 | passwd mysql |
4)、给目录/usr/local/mysql 更改拥有者
1 | chown -R mysql:mysql /usr/local/mysql/ |
附:永久性删除用户账号
1 2 3 | userdel peter groupdel peter usermod –G peter peter |
(强制删除该用户的主目录和主目录下的所有文件和子目录)
第四步:初始化 mysql 的数据库
首先去到mysql的bin目录
1 | cd /usr/local/mysql/bin |
1.初始化
1 | ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data |
生成出一个data目录,代表数据库已经初始化成功
并且mysql的root用户生成一个临时密码:sBBe=g.a*3g+ (最好先记录这个临时密码)
2.给数据库加密
1 | ./mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data |
3.启动mysql(为了不让进程卡主,可在启动mysql的命令后加上&代表此进程在后台运行)
1 | ./mysqld_safe --user=mysql & |
或者
1 | /usr/local/mysql/support-files/mysql.server start |
问题:
修复:
1 2 | mkdir / var /run/mariadb/ chown -R mysql:mysql / var /run/mariadb/ |
有时建了文件夹和文件后,还是会报错,可以尝试删掉etc/my.cnf文件
4.检查
1 | ps -ef|grep mysql |
发现有以上进程便代表启动成功。
第五步:进入客户端
首先去到mysql的bin目录
1 | cd /usr/local/mysql/bin |
1.登录
1 | ./mysql -uroot -p |
回车后输入之前的临时密码
错误1:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
这个看应该是权限问题,增加权限配置,
1 2 3 | mkdir / var /log/mariadb/; touch / var /log/mariadb/mariadb.log; chown -R mysql:mysql / var /log/mariadb/ |
错误2:mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.
var/lib/mysql目录不存在,首要先创建,其次Mysql客户端和服务器端是通过初始化mysql.sock 文件来进行通信,所以服务器在启动时需要写入该文件,因此该文件所存放的目录必须双方都具有访问权限
1 2 | mkdir / var /lib/mysql chown -R mysql:mysql / var /lib/mysql/ 或者 chmod 777 / var /lib/mysql |
这个问题查了一堆资料没鬼用,最后用下面这句解决了,启动时指定user和地址,原文地址:https://www.cnblogs.com/xuey/p/10460495.html
在默认情况下,Mysql安装以后会在/tmp目录下生成一个mysql.sock文件,如该文件丢失则Mysql将不能够正常启动,解决方法:使用mysqld_safe 启动即可解决;
1 | ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data |
错误3:Can't create/write to file '/var/run/mariadb/mariadb.pid' (Errcode: 2 - No such file or directory)
分析/var/log/mariadb/mariadb.log日志, Can't create/write to file '/var/run/mariadb/mariadb.pid' (Errcode: 2 - No such file or directory),同样的处理方式
1 2 | mkdir / var /run/mariadb/ chown -R mysql:mysql / var /run/mariadb/ |
2.修改密码
1 | set password=password |
或者
首先拿到操作系统的root权限,然后kill掉Mysql服务或者手动stop掉,这里我推荐使用手动stop;
1 service mysql stop
然后执行
1 mysqld_safe --skip-grant-tables &
&,表示在后台运行,不再后台运行的话,就再打开一个终端吧。
接着登陆MySQL修改密码
1 mysql 2 mysql> use mysql; 3 mysql> UPDATE user SET password=password("test123") WHERE user='root'; 4 mysql> exit;
注意:如果Mysql的版本是5.7及以上的话update语句如下:
1 mysql> update user set authentication_string=passworD("test") where user='root';
参考:https://www.cnblogs.com/chuckjam/archive/2018/08/10/9456255.html
第六步:设置远程访问
1,在远程访问之前需先配置防火墙 systemctl stop firewalld.service(不推荐,可配置开通3306端口)
2,授权
1 2 3 4 | mysql>GRANT ALL PRIVILEGES ON *.* TO 'root' @ '%' IDENTIFIED BY 'root的密码' WITH GRANT OPTION; mysql>FLUSH PRIVILEGES; mysql> select host,user from user; 【多出1条远程登录用户记录】 mysql>flush privileges;(刷新) |
或者
1 2 3 4 | mysql>use mysql; mysql>update user set host = '%' where user = 'root' ; mysql> select host, user from user; mysql>Flush Privileges; |
错误:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
安装完mysql 之后,登陆以后,不管运行任何命令,总是提示这个
解决方式如下:
MySQL版本5.7.6版本以前用户可以使用如下命令:
1 | mysql> SET PASSWORD = PASSWORD( 'Xiaoming250' ); |
MySQL版本5.7.6版本开始的用户可以使用如下命令:
1 | mysql> ALTER USER USER() IDENTIFIED BY 'Xiaoming250' ; |
如果不清楚自己是什么版本,可以将两条都尝试一下。
参考:https://blog.csdn.net/muziljx/article/details/81541896
此时使用远程机器进行访问
解析:使用mysql -h主机ip -u用户名 -p密码即可进行远程访问
第七步:设置开机自启动
1、添加服务mysql
1 | chkconfig --add mysql 或者【mysqld -install】 |
2、设置mysql服务为自动
1 | chkconfig mysql on |
3、重启查看进程
1 2 | init 6 ps -ef|grep mysql |
第八步:配置环境变量
为了方便操作,配置环境变量还是有必要的。
1 2 3 | vi /etc/profile //export PATH=$JAVA_HOME/bin:/usr/local/mysql/bin:$PATH export PATH=$PATH:/bin:/usr/local/mysql/bin |
小结:到这一步基本的配置基本就完成了。
安装包:mysql安装链接:http://pan.baidu.com/s/1pL7bFab 密码:5iz7
参考:http://www.cnblogs.com/1016882435AIDA/p/6265759.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!