MySQL使用笔记

下载地址

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
2
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld

测试从Server中攫取信息

1
2
3
4
5
6
7
8
9
10
mysqlshow -u root -p
Enter password:
+--------------------+
| Databases |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
mysqlshow -u root -p mysql
Enter password:
Database: mysql
+---------------------------+
| Tables |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
1
2
3
4
5
6
7
8
9
mysql -u root -p -e "SELECT User, Host, plugin FROM mysql.user" mysql
Enter password:
+---------------+-----------+-----------------------+
| User | Host | plugin |
+---------------+-----------+-----------------------+
| root | localhost | mysql_native_password |
| mysql.session | localhost | mysql_native_password |
| mysql.sys | localhost | mysql_native_password |
+---------------+-----------+-----------------------+

如果能正常使用上述命令得到相应结果,恭喜你,说明MySQL组件安装成功。

管理MySQL用户账号

可以使用mysql_secure_installation和MySQL WorkBench(一个MySQL图形界面客户端)。

其它注意事项

  1. 可以用mysqld_safe和mysql.server脚本等自动启动Server,用systemd和mysql.server脚本等关闭Server。
  2. MySQL时区(Time Zone)有时也需要特别设置,否则在连接MySQL时可能会出错。
  3. MySQL针对字符集和字符序有server级、database级、table级和column级的精确设置。
  4. 要避免在使用MySQL过程中出现乱码,必须对字符集和字符序理解到位,设置精准。
  5. 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等。
文章作者: 红发
文章链接: https://AIpynux.github.io/2019/03/19/MySQL使用笔记/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 红发