ubuntu 22.04 server 安装 mysql 5.7.40 LTS
参考:
ubuntu 22.04 server 安装 和 初始化 LTS
https://blog.csdn.net/wowocpp/article/details/143562451
centos7 安装 mysql5.7 LTS
https://blog.csdn.net/wowocpp/article/details/139467094
mysql 常用指令 LTS
https://blog.csdn.net/wowocpp/article/details/131812372
Ubuntu22部署MySQL5.7详细教程
https://openatomworkshop.csdn.net/6645a148b12a9d168eb6b346.html
ubuntu 22.04 server 安装 mysql 5.7.40 更改 datadir 目录 LTS
https://blog.csdn.net/wowocpp/article/details/143564563
ubuntu20.04安装mysql5.7,并实现更改数据目录
https://blog.csdn.net/weixin_42052964/article/details/136190862
vip Ubuntu22.04安装低版本MySQL5.7
https://www.cnblogs.com/DingyLand/p/17466734.html
最后一个方法
选择版本
进入MySQL官方的Community Server选择历史版本:
https://downloads.mysql.com/archives/community/
下载tar包
可以使用wget命令链接下载地址,也可以使用腾讯云提供的文件上传,将tar包放在Ubuntu的一个目录中
cd ~
mkdir work
cd work
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.40-1ubuntu18.04_amd64.deb-bundle.tar
mkdir tmp
在目录下解压tar包
tar xvf mysql-server_5.7.40-1ubuntu18.04_amd64.deb-bundle.tar -C tmp/
cd tmp
解压后目录
安装
安装依赖lib包
sudo apt-get install ./libmysql*
sudo apt-get install libtinfo5
正常现象
N: Download is performed unsandboxed as root as file '/home/jack/work/tmp/libmysqlclient20_5.7.40-1ubuntu18.04_amd64.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)
安装客户端和服务端,按提示可能要先安装community版本
sudo apt-get install ./mysql-community-client_5.7.40-1ubuntu18.04_amd64.deb
sudo apt-get install ./mysql-client_5.7.40-1ubuntu18.04_amd64.deb
sudo apt-get install ./mysql-community-server_5.7.40-1ubuntu18.04_amd64.deb
sudo apt-get install ./mysql-server_5.7.40-1ubuntu18.04_amd64.deb
第三句话的时候 ,会输入密码 root,省得忘记了,和用户名 root 一样,以后再修改
过程中会提示设置MySQL的密码,用户名默认root,密码也写 root吧以后再 修改
启动MySQL
检查状态
一般安装成功就自动启动,输入命令检查启动状态
systemctl status mysql.service
绿色的active表示运行中
登录MySQL
mysql -u root -p
输入密码后,如下界面就是进入MySQL命令行
输入 exit 退出
安装成功,可以选择删除安装包
此时mysql安装完成了,但是不能为我们的程序提供服务(使用连接工具现在是连接不上的)。 因为还需要配置远程连接,使我们可以远程登录才可以。
四、开启远程访问功能
1、允许其他主机通过root访问数据库
进入mysql库,查看user表。 表中host、user字段标识了可以访问数据库的主机和用户。
use mysql;
select User,Host from user;
默认情况下 mysql 只接受本地访问,需要执行 mysql 语句授权外网用户访问。例如下面的数据就表示只能用本地主机通过root用户访问数据库。为了让数据库支持远程主机访问,有两种方法可以开启远程访问功能。
1)第一种(改表法):
修改host字段的值,将localhost修改成需要远程连接数据库的ip地址,或者直接修改成%,使所有主机都可以通过root用户访问数据库。
以下是将user为root对应的host字段直接修改成%的命令:
update user set host = ‘%’ where user = ‘root’;
输入命令使修改生效
flush privileges;
再次查看user表, 修改成功。
第二种(授权法):
例如,你想root使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY
'mypassword' WITH GRANT OPTION;
输入命令使修改生效
flush privileges;
这两种方法选择一种即可,接下来配置允许其他IP访问
2、修改配置文件,允许其他IP通过自定义端口访问
现在需要配置服务器的接口,从而使服务器能够侦听远程可访问的接口。默认情况下,绑定地址为“127.0.0.1”。
修改位于/etc/mysql/mysql.conf.d/mysqld.cnf 的配置文件,将bind-address=127.0.0.1修改成0.0.0.0,并添加 port = 开放的具体端口号,默认端口号为3306 ,即可实现开放外网访问和自定义端口的目的。
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
点击 Esc按键进入命令模式,输入 :wq 保存并退出。
重启mysql服务
systemctl restart mysql
重启成功后,就可以使用连接工具连接了!
五、使用Navicat连接数据库
Navicat是一个广泛使用的数据库管理工具,可用于管理多种数据库系统,如MySQL、MariaDB、Oracle等。
使用ifconfig查看服务器ip地址,使用Navicat与数据库建立连接。
111
先卸载原有的mysql,如果未安装,则跳过这一部分(以下内容均需要root权限执行)
# 1.查看有关 mysql 的包
dpkg --list|grep mysql
# 2.卸载 mysql-common
apt-get remove mysql-common
# 3.卸载 mysql-server-8.0(可以根据自己的版本去进行卸载)
apt-get autoremove --purge mysql-server-8.0
# 4.清除残留数据
dpkg -l|grep ^rc|awk '{print$2}'|sudo xargs dpkg -P
# 5.再次查看 mysql 的相关包
dpkg --list|grep mysql
# 6.如果未打印任何内容,则卸载干净,如果打印其他,直接卸载即可
apt-get autoremove --purge mysql-apt-config
# 7.删除mysql相关文件夹
rm -rf /etc/mysql /var/lib/mysql
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42052964/article/details/136190862
错误问题
find / -name ‘*.sock’
sudo lsof -i:3306
ln -s /storage/db/mysql/mysql.sock /var/lib/mysql/mysql.sock
/run/mysqld/mysqld.sock
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
/var/run/mysqld/mysqld.sock
ls -li /var/run/mysqld/mysqld.sock
.mysql_history
上面的 错误 不知道 是啥原因
重新 xtrabackup 恢复之后,就这样了
11
CREATE USER ‘myread’@‘%’ IDENTIFIED by ‘1234’;
GRANT SELECT ON . TO ‘myread’@‘%’;
FLUSH PRIVILEGES;
select * from mysql.user where user=‘myread’\G
mysql -u myread -p
mysql -h 127.0.0.1 -u myread -p
use mysql ;
SELECT user,host,plugin FROM user;
https://gitcode.csdn.net/662b5028c647e032687dfac0.html
四、故障解决方法:
解决方案一:
修改“/etc/my.cnf”配置文件,在/etc/php.ini文件中"[MySQL]“项下找到"mysql.default_socket”,并设置其值指向正确的mysql服务socket文件即可, 在配置文件中添加“[client]”选项和“[mysql]”选项,并使用这两个选项下的“socket”参数值,与“[mysqld]”选项下的“socket”参数值,指向的socket文件路径完全一致。如下:
[mysqld]
datadir=/storage/db/mysql
socket=/storage/db/mysql/mysql.sock
…省略n行
[client]
default-character-set=utf8
socket=/storage/db/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket=/storage/db/mysql/mysql.sock
修改完后,重启mysqld服务,即可解决此问题。
解决方案二:(小七是用此方法解决的问题)
使用“ln -s /storage/db/mysql/mysql.sock /var/lib/mysql/mysql.sock”命令,将正确的socket文件位置,软链接到提示错误的socket文件路径位置,即可解决此问题:
[root@lam7 opt]# ls /var/lib/mysql/mysql.sock
ls: 无法访问/var/lib/mysql/mysql.sock: 没有那个文件或目录
[root@lam7 opt]# ln -s /storage/db/mysql/mysql.sock /var/lib/mysql/mysql.sock
[root@lam7 opt]# ls /var/lib/mysql/mysql.sock
/var/lib/mysql/mysql.sock
这边讲述了mysql提供的“mysql”、“mysqldump”、“mysqladmin”等命令提示“ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘***’ (2)”的解决方法,如果需要解决“php”、“perl”、“python”等脚本语言提示此错误的问题
解决办法,告诉mysql 命令,我们的socket文件在什么地方。修改/etc/my.cnf 文件添加如下内容:
[mysqld]
socket=/data/mysql5.7.24/db_test/mysql.sock
[client]
socket=/data/mysql5.7.24/db_test/mysql.sock
另一种解决办法就是在登陆的时候指定socket。
第一种写法
mysql -uroot -p --socket=/data/mysql5.7.24/db_test/mysql.sock
第二种写法
mysql -uroot -p -S /data/mysql5.7.24/db_test/mysql.sock
mysql_history
https://dev.mysql.com/doc/refman/5.7/en/mysql-logging.html
Controlling the History File
The .mysql_history file should be protected with a restrictive access mode because sensitive information might be written to it, such as the text of SQL statements that contain passwords. See Section 6.1.2.1, “End-User Guidelines for Password Security”. Statements in the file are accessible from the mysql client when the up-arrow key is used to recall the history. See Disabling Interactive History.
If you do not want to maintain a history file, first remove .mysql_history if it exists. Then use either of the following techniques to prevent it from being created again:
Set the MYSQL_HISTFILE environment variable to /dev/null. To cause this setting to take effect each time you log in, put it in one of your shell’s startup files.
Create .mysql_history as a symbolic link to /dev/null; this need be done only once:
ln -s /dev/null $HOME/.mysql_history