MySQL官网
- MYSQL.com:就是本网站的home
- DOWNLOADS:MySQL下载
- Enterprise:MySQL企业版本相关,略过
- Community:社区版,下载和使用社区版
- MySQL Community Server:MySQL Server
- MySQL Router:路由中间件
- MySQL Workbench:官方图型化管理界面
- DOCUMENTATION:官方文档
- Developer Zone:MySQL开发工程师板块
- Fornums:论坛
- Bugs:MySQL Bug相关
- Worklog:开发记录
- Labs:MySQL实验性项目
- Plant MySQL: 和MySQL相关从业人员的博客
- Blog Articles: Oracle工程师自己的博客
安装MySQL
- MySQL5.6以后的版本,推荐使用官方版本
- MySQL在5.6以后不断重构源码,安装包越来越大,功能和性能在持续改进
下载安装包
MySQL有三种方法安装
- apt-get等安装包安装:最简单的安装方法
- Source Code源码编译安装:不推荐,仅仅用来研究
- 通用二进制安装包安装:推荐安装方法,
这里我使用第3种方法在ubuntu种安装:
下载地址点击这里,就会进入如下页面:
- linux系列推荐下载Linux-Generic通用安装版版本,即使是ubuntu的也推荐Linux-Generic,这样可以一台机器上安装多个版本的linux
- 然后选择第二个,就会进入如下页面
安装
环境:uname -a
$ uname -a
Linux ubuntu 4.18.0-10-generic #11-Ubuntu SMP Thu Oct 11 15:13:55 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
1、创建MYSQL数据库数据存放的路径
$ mkdir -p workspace/mysql/mysql-data/{3306/{data,tmp,binlog,innodb_ts,innodb_log},backup,scripts}
2、设置配置文件
执行命令:
$ sudo gedit /etc/my.cnf
然后下面的内容填充进入
- 配置
[client]
port = 3306
socket = /home/oceanstar/workspace/mysql/mysql-data/3306/mysql.sock
[mysql]
prompt=(\\u@\\h) [\\d]>\\_
socket = /home/oceanstar/workspace/mysql/mysql-data/3306/mysql.sock
default-character-set=utf8mb4
[mysqld] # The MySQL server
port=3306
mysqlx_port = 33060
user=mysql
socket = /home/oceanstar/workspace/mysql/mysql-data/3306/mysql.sock
mysqlx_socket=/home/oceanstar/workspace/mysql/mysql-data/3306/mysqlx.sock
pid-file=/home/oceanstar/workspace/mysql/mysql-data/3306/mysql.pid
basedir=/usr/local/mysql
datadir=/home/oceanstar/workspace/mysql/mysql-data/3306/data
tmpdir=/home/oceanstar/workspace/mysql/mysql-data/3306/tmp
character_set_server=utf8mb4
default_storage_engine=InnoDB
########log settings########
log_error = /home/oceanstar/workspace/mysql/mysql-data/3306/error.log
slow_query_log = 1 #开启慢查询日志
slow_query_log_file = /home/oceanstar/workspace/mysql/mysql-data/3306/slow.log #指定日志文件存放文件
long_query_time = 2 #慢查询日志超时时间
# log_queries_not_using_indexes = 0 #未使用索引的查询不被记录到慢查询日志中
log_slow_admin_statements = 1 #记录那些慢的optimize table,analyze table和alter table语句
log_slow_slave_statements = 1 #记录由Slave所产生的慢查询
#log_throttle_queries_not_using_indexes = 10
# min_examined_row_limit = 1000 #记录那些由于查找了多余1000次而引发的慢查询
general_log = 0 # 不开启通用日志
general_log_file=/home/oceanstar/workspace/mysql/mysql-data/3306/general.log
log_bin=/home/oceanstar/workspace/mysql/mysql-data/3306/binlog/binlog
max_binlog_size = 500M #超过500
sync_binlog=5 # 每隔5次将binlog刷到磁盘满上去
#expire_logs_days = 30 # 日志30天过期
log_output = FILE
3、将安装包拖入MySQL
$ pwd
/home/oceanstar/workspace/mysql
$ $ ls
mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz mysql-data
4、解压并将解压后的文件移动到/usr/local/mysql【此目录作为安装目录】下
$ tar -xvf mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz
$ sudo mv mysql-8.0.29-linux-glibc2.12-x86_64 /usr/local/mysql-8.0.29
$ cd /usr/local/
$ $ ls
bin etc games include lib man mysql-8.0.29 sbin share src
5、创建快捷链接
$ sudo ln -s mysql-8.0.29/ mysql
$ ls -l
......
lrwxrwxrwx 1 root root 13 7月 21 10:25 mysql -> mysql-8.0.29/
drwxrwxr-x 9 oceanstar oceanstar 4096 7月 21 10:23 mysql-8.0.29
......
备注:删除快捷键的命令:unlink mysql
6、创建用户
$ sudo userdel mysql (删除原来的MySQL用户)
$ sudo groupadd mysql
$ sudo useradd -r -g mysql -s /bin/false mysql(因为我们只是想要所有权而不是登陆,因此使用-s /bin/false和-r不设置密码)
$ cd /usr/local/mysql
5、创建mysql数据目录
$ mkdir mysql-files
$ sudo chown mysql:mysql mysql-files 【修改当前mysql-files目录拥有者为mysql用户】
$ sudo chmod 750 mysql-files
6、下载libaio 【否则:bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory】
$ sudo apt-get install libaio1
启动
操作
1、初始化并且启动Mysql
$ bin/mysqld --initialize --user=mysql 【initialize:生成随机密码,记住密码】
$ bin/mysql_ssl_rsa_setup
$ bin/mysqld_safe --user=mysql & 【通过MySQL用户后台启动】
然后直接回车
2、将mysql的路径加入环境变量中
export PATH=/usr/local/mysql/bin:$PATH
3、登陆MySQL并改密码
> mysql -uroot -p 【输入随机生成的密码】
> set password = '123456'; 【修改密码】
> exit
-
可能的错误:ImportError: libtinfo.so.5: cannot open shared object file: No such file or directory
-
主要原因是 Ubuntu 升级后,系统动态库版本更新更名。PyTorch 在引入时调用动态库找不到对应的库进而报错。解决方案是设置一个软连接,让系统在查找低版本动态库时,自动打开高版本动态库。操作如下。
$ ls /lib/x86_64-linux-gnu/libtinfo.so.*
/lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.6.2
$ sudo ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.5
- 如果不存在,则去一个好的ubunu中复制一个libtinfo.so.5,并放入 /lib/x86_64-linux-gnu 目录下:
- 备注:libtinfo.so.5 百度云:https://pan.baidu.com/s/1SFza-Fa2-CVQh955XsJsZA
10、查看MySQL是否启动成功
>* ps -ef | grep mysqld
- 从上面可以看出, bin/mysqld_safe 命令启动实际上是调用了/usr/local/mysql/bin/mysqld
cat /usr/local/mysql/bin/mysqld_safe
可以看到这是一个脚本
2、简化启动
$ sudo cp support-files/mysql.server /etc/init.d/mysql.server
此后,操作MySQL命令如下:
$ /etc/init.d/mysql.server start // 启动MySQL
$ /etc/init.d/mysql.server stop //关闭MySQL
理论:服务端
用来启动MySQL服务器的可执行文件有很多,而且大部分都位于MySQL的安装目录的bin目录下。包括
(1)mysqld
- mysqld是一个可执行文件,他就是MySQL服务器程序
- 运行这个可执行文件就可以直接启动一个MySQL服务器进程,但是这个可执行文件并不常用
(2)mysqld_safe
- mysqld_safe 是一个启动脚本,它会间接调用mysqld并持续监控服务器的运行状态
- 当服务器进程停止时,就会自动重启mysqld
- 另外,它会将服务器程序的出错信息和其他诊断信息输出到错误日志,以便后期查找错误的原因
(3)mysql.server
- mysql.server也是一个启动脚本,它会间接性的调用mysqld_safe
- 在执行mysql.server时,在后面添加start参数就可以启动mysql服务器了,比如:
mysql.server start
- 这样,就可以简化调用
(4)mysqld_multi
- mysqld_multi也是一个启动脚本。
- 为什么要有这个脚本呢?一台计算机上可以运行多个服务器实例,通过mysqld_multi就可以启动后缀停止多个服务器进程以及报告它们的运行状态了
理论:客户端
在启动MySQL服务端之后,就可以用客户端来连接服务器了。
bin目录下也有很多客户端程序,我们要重点关注的是可执行文件mysql
。
启动这个可执行文件一般需要一些参数,格式如下:
mysql -h主机名 -u用户名 -p密码
我们可以用多个客户端同时连接同一个服务器,客户端之间是互不影响的
怎么查看配置文件
1、查看mysql的配置文件读取顺序,下面两个命令之一都可以
$ bin/mysqld --verbose --help| grep -A 1 "Default options"
$ bin/mysqld --help -vv | grep my.cnf
- mysql从这四个地方依次读取配置文件/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf,后读取的my.cnf中的配置,如果有相同项,会覆盖之前的配置。
- 注意:原生的/etc/或者/etc/mysql/等目录下时没有my.cnf文件的,需要我们手动在/ect/等目录下创建一个my.cnf文件,然后写入配置项
还可以通过defaults-file指定默认配置文件【没有试过】
$ mysqld --help -vv | grep defaults-file
2、更改配置文件之后记得重启数据库
$ /etc/init/mysql.server restart