0. 卸载 mysql
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo rm -rf /etc/mysql /var/lib/mysql
sudo rm -rf /var/log/mysql
1. 安装mysql
sudo apt update
sudo apt upgrade -y
# 查看可使用的安装包
sudo apt search mysql-server
# 安装最新版本
sudo apt install -y mysql-server
# 启动/查看服务
sudo systemctl start mysql
sudo systemctl status mysql
# 开机启动
sudo systemctl enable mysql
2. mysql指令
#查看mysql版本
mysql -V
#登录mysql
mysql -u root -p
#展示数据库
show database;
#检查mysql服务状态
systemctl status mysql
若出现无法不指定-h ip 登录 MySQL 或者 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 的情况,先查看 /var/run/mysqld/mysqld.sock 是否存在,若存在则在 /etc/mysql/my.cnf 添加以下内容
[client]
socket=/var/run/mysqld/mysqld.sock
3. 初始化数据库
#进入数据库
mysql
#修改初始密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';
#初始化数据库
sudo mysql_secure_installation
#Would you like to setup VALIDATE PASSWORD component? 是否安装密码验证插件
N
#Change the password for root ? 是否改变root密码
N
#Remove anonymous users? 是否移除默认用户
Y
#Disallow root login remotely? 是否禁止root用户远程登陆
N
#Remove test database and access to it?是否溢出test数据库
Y
#Reload privilege tables now?是否现在重新加载
Y
4. 配置数据库远程
cd /etc/mysql/mysql.conf.d
cp mysqld.cnf mysqld.cnf.bak
vim mysqld.cnf
注释掉 bind-address=127.0.0.1
进入mysql
#mysql8中已经不支持grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option这种写法。
CREATE USER 'root'@'%' IDENTIFIED BY 'password';
grant all privileges on *.* to 'root'@'%';
#刷新权限
flush privileges;
exit
#重启mysql
systemctl restart mysql
5. 修改端口
vi /etc/mysql/mysql.conf.d/mysqld.cnf
#在文件中添加port参数,port=13306样式来进行修改端口
#重启服务
systemctl restart mysql
#查看端口
show global variables like 'port';
#默认为3306
6. 单独分配用户
use mysql;
create user 'username'@'host' identified by 'password';
# *.*表示[数据库].[数据表]
grant all privileges on *.* to 'username'@'%' with grant option;
flush privileges;
#收回权限(不包含赋权权限)
REVOKE ALL PRIVILEGES ON *.* FROM user_name;
REVOKE ALL PRIVILEGES ON user_name.* FROM user_name;
#收回赋权权限
REVOKE GRANT OPTION ON *.* FROM user_name;
#操作完后重新刷新权限
flush privileges;