今天在GPU上安装MySQL,折腾了大半天,服务器用的是arch系统,之前没接触过,遇到了不少问题,我现在从安装开始讲:
在Arch上安装MySQL
MariaDB 现在是 Arch Linux 官方默认的 MySQL 实现。Oracle MySQL 已被移动到 AUR,推荐所有用户升级[broken link: invalid section]到 MariaDB。参见这条公告。
MySQL (简体中文)
安装步骤比较简单,安装网上的说明文档一步步来就好了。
1 | sudo pacman -S mariadb mariadb-clients |
安装完软件包之后,再运行
1 | # mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql |
结束后,启动MySQL
1 | sudo systemctl start mysqld |
设置密码
1 | mysqladmin -u root password '12345678' |
搞定!
设置远程登录
这TM的坑就来了,不知道怎么的就把原来数据库的值给改了,下面我一步一步说:
网上的教程大部分都是这样的:
更改配置文件
不同系统的目录可能不一样,大家应该不难找到:
1 | sudo vim /etc/mysql/my.cnf |
在旧版本中找到 skip-networking,把它注释掉就可以了
1 | #skip-networking |
在新版本中:
1 | # Instead of skip-networking the default is now to listen only on |
找到 :bind-address = 127.0.0.1 这一行要注释掉
1 | #bind-address = 127.0.0.1 |
修改权限
格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by “用户密码”;
1 | grant select,update,insert,delete on *.* to root@'%' identified by '123456'; |
或者所有权限
1 | GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '123456'; |
接着执行
1 | flush privileges; 使授权生效 |
修改user表(坑)
MySQL建用户的时候会指定一个host,默认是127.0.0.1/localhost,那么这个用户就只能本机访问,其它机器用这个用户帐号访问会提示没有权限,host改为%,表示允许所有机器访问。
然后呢,一些博客里面就让我们把原来的localhost改为"%"
Host | User |
---|---|
xxx | root |
127.0.0.1 | root |
::1 | root |
localhost | root |
% | root |
恩,没错就是这里。这里的127.0.0.1
和localhost
是不一样的,我们平常默认登录是用mysql -uroot -p
,这样的话(前提是没有修改过配置文件中的对应设置),我们本机地址是localhost
,如果不小心把这个改没了。。。。那你就登不上喽:
1 | error: 'Access denied for user 'root'@'localhost' (using password: YES)' |
恩,没错,就是这样的提示,刚开始我还以为密码错了。。。。结果重置了好几遍密码都不行,知道后来才知道,原来是登录地址的权限不对/(ㄒoㄒ)/~~
你想登录的话要这样
1 | mysql -h 127.0.0.1 -uroot -p |
哈哈哈,登录进去了吧,这就说明127.0.0.1
和localhost
是不一样的。
那么解决办法呢,就是再新增一条127.0.0.1
的记录,我们可以直接拷贝原有记录,其余不变,把host
中的记录改为127.0.0.1
即可。