1、安装
1、官网下载安装
2、解压 修改安装包为 mysql
将mysql放到/usr/local下
这么做的目的是mysql的启动脚本以及配置文件的好多配置都是这个路径下,省的改动
3、添加mysql用户和用户组
groupadd mysql
useradd -r -g mysql mysql
4、修改/etc/my.cnf文件
my.cnf文件有mysql的配置 ,启动mysql的时候默认回去加载此文件
由于有多个my.cnf文件,所以有个优先级的概念
/bin/mysqld --verbose --help |grep -A 1 'Default options' 这个命令来查看优先级
datadir是mysql的数据保存路径
socket是负责socket通信用的
5、初始化数据库
此步的操作是用来加载mysql系统的表等信息 (mysql根目录下执行)
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/
6、给mysql添加权限
chown -R root:root .
chown -R mysql:mysql data
7、启动
cp support-files/mysql.server /etc/init.d/mysql
service mysql start
8、修改密码
./bin/mysqladmin -u root password '密码自己设定'
可能遇到的问题:
1、service mysql start
Starting MySQL.181108 04:58:50 mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.
解决办法
创建 mkdir /var/lib/mysql
2、[ERROR] Can't start server : Bind on unix socket: Permission denied
[ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
原因: Mysql客户端和服务器端是通过初始化mysql.sock 文件来进行通信,所以服务器在启动时需要写入该文件,因此该文件所存放的目录必须双方都具有访问权限。
所以,MySQL服务不具备目录 /var/lib/mysql 的写入权限,无法生成mysql.sock文件,自然服务启动时无法找到该文件。
给目录 /var/lib/mysql 付予写入权限或者最大权限—chmod 777 /var/lib/mysql
解决办法 chmod 777 /var/lib/mysql/
3、./mysqladmin -u root password 'root'
./mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!
解决:
建立软连接
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
最后注意看错误日志
mysql的错误日志的位置在/etc/my.cnf中标记
log-error
[mysqld_safe]
log-error=/var/log/mysqlerr.log
参考文件:https://blog.csdn.net/smile___you/article/details/54409073
https://www.cnblogs.com/xinjing-jingxin/p/8025805.html
https://blog.csdn.net/qq_32331073/article/details/76229420
https://blog.csdn.net/hjf161105/article/details/78850658
https://www.cnblogs.com/wajika/p/6323026.html
2、设置远程访问
在服务器上安装了mysql之后,默认的话只能够服务器本机进行访问,如果你想用自己电脑的客户端或者跑代码访问数据库,会报错,没有权限
解决
1、检查防火墙没有挡住3306端口
2、将mysql的权限设置为全局
将mysql权限设置成为全局的方法
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
上述是将数据库root用户下密码123456的所有数据库放开访问权限
参考资料:https://www.cnblogs.com/cnblogsfans/archive/2009/09/21/1570942.html
3、linux下的乱码问题
进入mysql,发现有中文乱码的问题
解决思路
1、 查看数据库编码
通过这条命令展示其编码
SHOW VARIABLES LIKE 'character%';
2、修改/etc/my.cnf文件
[mysqld]
character_set_server=utf8
[client]
default-character-set=utf8