# 安装 MySQL最早是纯开源的软件,先是被SUN收购(2008年),后来SUN又被ORACLE并购(2009年),ORACLE是专门做商业数据库的,它收购MySQL的目的不言而喻。 MySQL版本: - MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。 - MySQL Enterprise Edition 企业版本,需付费,可以试用30天。 - MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server。 - MySQL Cluster CGE 高级集群版,需付费。 而Mariadb是MySQL的衍生品,是MySQL之父Michael Widenius自MySQL被ORACLE收购后基于MySQL起的一个新分支。 Mariadb和MySQL用起来没有多大区别,两者在核心框架基本一样,但在底层功能上有不少细微差异,而且随着版本迭代差异会越来越大。 [查看MySQL和Mariadb版本兼容性](https://mariadb.com/kb/en/mariadb-vs-mysql-compatibility/) 建议选择完全免费的开源社区版Mariadb。MySQL以后可能会收费,虽然目前还没有收费的计划。 ## MySQL安装 ### 二进制包安装mysql8.0 Centos/Rocky/Ubuntu操作都一样 1. 下载,太慢的话就手动下载并上传服务器 ``` cd /usr/local sudo wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz ``` 2. 解压 ``` sudo tar Jxf mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz sudo ln -s mysql-8.0.36-linux-glibc2.12-x86_64 mysql ``` 3. 创建用户 ``` sudo useradd -s /sbin/nologin mysql ``` 4. 创建数据目录 ``` sudo mkdir -p /data/mysql sudo chown -R mysql:mysql /data/mysql ``` > 数据目录尽量放在大的磁盘,性能更好的磁盘里,mysql对磁盘读写要求很高 5. 定义基础配置文件 ``` $ sudo vim /etc/my.cnf # 客户端配置 [mysql] port = 3306 socket = /tmp/mysql.sock # 服务端配置 [mysqld] user = mysql port = 3306 basedir = /usr/local/mysql # 程序存放路径 datadir = /data/mysql # 数据存放路径 socket = /tmp/mysql.sock # 本地连接socket,socket是linux进程间、程序间通信的一种方式 pid-file = /data/mysql/mysqld.pid log-error = /data/mysql/mysql.err ``` > 注:修改文件路径时,需要将已经生成过的文件移动到新指定的路径下,或者删除掉,不然重启服务会报错。 6. 安装依赖 ``` # Rocky/Centos sudo yum install -y ncurses-devel libaio-devel # Ubuntu sudo apt install libaio-dev libtinfo5 ``` 7. 初始化数据库 ``` /usr/local/mysql/bin/mysqld --console --initialize-insecure --user=mysql ``` > `initialize-insecure`使用空密码 8. 定义启动配置文件 ``` $ sudo vim /usr/lib/systemd/system/mysqld.service [Unit] Description=MYSQL server After=network.target [Install] WantedBy=multi-user.target [Service] Type=forking TimeoutSec=0 PermissionsStartOnly=true ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize $OPTIONS ExecReload=/bin/kill -HUP -$MAINPID ExecStop=/bin/kill -QUIT $MAINPID KillMode=process LimitNOFILE=65535 Restart=on-failure RestartSec=10 RestartPreventExitStatus=1 PrivateTmp=false ``` 9. 启动服务 ``` sudo systemctl daemon-reload sudo systemctl enable mysqld sudo systemctl start mysqld ``` 10. 配置环境变量 ``` sudo vim /etc/profile.d/mysql.sh export PATH=$PATH:/usr/local/mysql/bin #执行命令使其生效 source /etc/profile.d/mysql.sh ``` 11. 登录数据库 ``` #初始化时使用空密码 mysql -uroot -p ``` 12. 设置密码 ``` #登录数据库后操作 alter user root@localhost identified by ‘密码’; #数据库外操作 mysqladmin -uroot password '密码' ```