下载地址
https://downloads.mysql.com/archives/community/
安装流程
解压MySQL组件包
1 | tar -xvf mysql-server_MVER-DVER_CPU.deb-bundle.tar |
对于适用于64位Ubuntu16.04系统的MySQL 5.7.24版本组件包解压缩代码:1
tar -xvf mysql-server_5.7.24-1ubuntu16.04_amd64.deb-bundle.tar
安装依赖库
1 | sudo apt-get install libaio1 |
预设置MySQL
1 | sudo dpkg-preconfigure mysql-community-server_*.deb |
注意:也可以不预设置,那样可以通过Socket Authentication机制来充当密码。
安装MySQL各组件
1 | sudo dpkg -i mysql-{common,community-client,client,community-server,server}_*.deb |
如果用上述命令安装时因缺少依赖而警告,可以用以下命令修复:1
sudo apt-get -f install
安装结果
- 所有配置文件放在/etc/mysql(如my.cnf)
- 所有二进制文件、库文件、头文件等放在/usr/bin和/usr/sbin
(这两个目录都在PATH下,不用再额外为MySQL配置环境变量) - 数据目录是/var/lib/mysql(进入需要root权限,一般用户下使用mysql需要修改该目录权限?)
启动MySQL Server
在类Unix系统下启动mysqld server的推荐方式是用mysqld_safe(MySQL Server Startup Script),
mysqld_safe让server启动更加安全,它会在遇到错误时重新启动server以及将此刻运行时信息打到错误日志中。1
mysqld_safe --user=mysql & #需要root权限
测试MySQL Server
查看MySQL Server信息
1 | mysqladmin -u root -p version |
关闭Server
1 | mysqladmin -u root -p shutdown |
重启Server
1 | mysqld_safe --user=mysql & |
注意:如果使用deb格式文件安装MySQL组件后,第一次关闭Server再重启Server可能会遇到下列错误。
mysqld_safe Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists.
错误提示告诉我们/var/run/mysqld目录不存在,但是我们如果仅是创建一个这样的目录也还是不行,它又会提示我们
mysqsld.sock不存在。那实际上这个问题的出现是权限控制导致的,由于之前安装MySQL组件的命令中用了sudo,它使用这个
权限完成安装后还用此权限自动开启了Server(开启Server的前提就是会在/var/run/mysqld目录下创建服务器启动所需的各种文件
如mysqld.sock,mysqld.pid等),然而第一次关闭Server后系统会自动删除mysqld目录,所以我们再重新启动Server时mysql就找不到
mysqld目录。那为什么自己创建一个mysqld目录后还是不行?因为/var/run/目录下的文件和文件夹在没有设置的情况下它们的所有者和组
都是root,一般用户只有读和执行权限,mysql(用户和组)自己无法在这个文件夹中创建所需要的mysqld目录及目录下的mysqld.sock等文件,
所以也还是启动不了。
所以解决此问题只需两步:1. 创建/var/run/mysqld目录 2. 将这个目录的所有者和所在组改为mysql。1
2mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
测试从Server中攫取信息
1 | mysqlshow -u root -p |
1 | mysqlshow -u root -p mysql |
1 | mysql -u root -p -e "SELECT User, Host, plugin FROM mysql.user" mysql |
如果能正常使用上述命令得到相应结果,恭喜你,说明MySQL组件安装成功。
管理MySQL用户账号
可以使用mysql_secure_installation和MySQL WorkBench(一个MySQL图形界面客户端)。
其它注意事项
- 可以用mysqld_safe和mysql.server脚本等自动启动Server,用systemd和mysql.server脚本等关闭Server。
- MySQL时区(Time Zone)有时也需要特别设置,否则在连接MySQL时可能会出错。
- MySQL针对字符集和字符序有server级、database级、table级和column级的精确设置。
- 要避免在使用MySQL过程中出现乱码,必须对字符集和字符序理解到位,设置精准。
- utf-8编码本身可能使用2\3\4个字节,但是MySQL的utf8编码只支持3字节,而表情数据需要4字节进行存储,所以不能在使用utf8字符集编码的表中存储,应该用utf8mb4。
SQL语句
- DDL(Data Definition Languages)语句:常用的语句关键字有create、drop和alter等。
- DML(Data Manipulation Languages)语句:常用的语句关键字有insert、delete、update和select等。
- DCL(Data Control Languages)语句:常用语句关键字有grant和revoke等。