服务器安装数据库
一、前提与准备
1.服务器系统 CentOS 8.2 64位,或者 linux ( 非必须 )
2.已通过 ssh 远程连接到服务器
3.当前用户为 root
二、安装 MySQL
1.切换到家目录. ( 此步不做也行~ )
cd 回车
2.复制下面指令到命令行, 然后回车, 发呆即可
wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7 && ./install.sh db
此为后端常用的 lnmp 一键安装环境. 它先下载安装脚本, 然后根据命令参数下载源码安装包. 之后编译安装.
命令最后 db, 表示单独安装 MySQL 数据库
1核2G 服务器安装时间大概需要 12 分钟
3.安装结束
4.连接测试 和 添加远程的连接用户
设置权限规则:
grant all privileges on "数据库名称" to '账号'@‘%’ identified by '密码'; // 注释 * 为所有数据库的权限
5. 退出mysql
6. MySQL 状态管理
/etc/init.d/mysql {start|stop|restart|reload|force-reload|status} /etc/init.d/mysql start # MySQL安装后默认就是运行状态, 所以一般不用执行这条指令 /etc/init.d/mysql stop # 停止 MySQL 服务 /etc/init.d/mysql restart # 重启 /etc/init.d/mysql reload # 重新加载, 应该是比 restart 好一些 /etc/init.d/mysql status # 查看当前状态
三. 防火墙设置
知识点1: 虽然 MySQL 已起动, 开始监听 3306 端口. 但是整个服务器层面默认不允许外人访问这个端口.我们需要配置防火墙, 允许该端口的访问.
知识点2: 另外 MySQL 的管理员账号默认是不可以远程访问的.
「所以我们要做两件事: 」
1.防火墙设置
- 外网防火墙 (通过服务器厂商提供的页面进行设置 )
- 服务器内部防火墙服务配置 ( 通过服务器命令行 )
2. MySQL数据库服务器添加可以远程访问的用户
1.1 登录 官网,外部防火墙设置
2.1 服务器内部防火墙设置
# 下面指令可无脑依次执行
# 1.查看防火墙状态
systemctl status firewalld.service
# 2.开启防火墙
systemctl start firewalld.service
# 3.开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 4.重启防火墙使新设置生效
firewall-cmd --reload
# 5.查看已经打开放的端口
firewall-cmd --list-ports
四. 本地安装 DBeaver
1. 点击此处安装
2. 远程连接数据库
3. 连接成功
4. 使用 SSH连接
5. 密码 ssh 连接失败,提示 Auth fail
6. 无法连接远程服务器,因没有权限
解决办法:
1. 登录服务器平台,设置外网防火墙 3306端口号
五、新建数据库
六. 卸载 MySQL
1. 停用 mysql
/etc/init.d/mysql stop
2. 查看 mysql 程序的对应的pid号
ps -e|grep mysql
3. 杀掉 mysql 进程
kill -9 进程号
或者
killal mysqld // 杀掉所有已mysql命名的进程
4. 进入删除目录
cd /root/lnmp1.7 回车 ./uninstall.sh 回车 1 回车 任意键回车
七、重装mysql 遇到的问题
1. linux ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
一般这个错误是由密码错误引起,解决的办法自然就是重置密码。
假设我们使用的是root账户。
1.1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下:
#vim /etc/my.cnf (注:windows下修改的是my.ini)
在文档内搜索mysqld定位到[mysqld]文本段:/mysqld (在vim编辑状态下直接输入该命令可搜索文本内容)
在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,如下图所示:
保存文档并退出:#:wq
1.2. 接下来我们需要重启MySQL:
/etc/init.d/mysql restart(有些用户可能需要使用/etc/init.d/mysqld restart)
1.3.重启之后输入#mysql即可进入mysql。
1.4.接下来就是用sql来修改root的密码
mysql> use mysql;
mysql> update user set password=password("你的新密码") where user="root";
mysql> flush privileges;
mysql> quit
到这里root账户就已经重置成新的密码了。
1.5. 编辑my.cnf,去掉刚才添加的内容,然后重启MySQL。大功告成!
网上有很多关于这个问题的解决说明,很多刚接触的朋友可能比较迷惑的是在自己的平台上找不到my.cnf或者my.ini文件,如果你是Linux,使用如下方式可以搜索到:
至于windows平台,去安装目录下找一下my.ini吧。
2. error Error: ER_TOO_MUCH_AUTO_TIMESTAMP_COLS: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause at Query.Sequence._packetToError
解决办法:请查看以下网址
3. linux mysql Operation timed out (Connection timed out)
解决办法:查看以上外部防火墙设置
4. 如有其他问题可查看以下网址