今天在GPU上安装MySQL,折腾了大半天,服务器用的是arch系统,之前没接触过,遇到了不少问题,我现在从安装开始讲:

在Arch上安装MySQL

MariaDB 现在是 Arch Linux 官方默认的 MySQL 实现。Oracle MySQL 已被移动到 AUR,推荐所有用户升级[broken link: invalid section]到 MariaDB。参见这条公告。

MySQL (简体中文)

安装步骤比较简单,安装网上的说明文档一步步来就好了。

1sudo pacman -S mariadb mariadb-clients

安装完软件包之后,再运行

1# mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

结束后,启动MySQL

1sudo systemctl start mysqld

设置密码

1mysqladmin -u root password '12345678'

搞定!

设置远程登录

这TM的坑就来了,不知道怎么的就把原来数据库的值给改了,下面我一步一步说:

网上的教程大部分都是这样的:

更改配置文件

不同系统的目录可能不一样,大家应该不难找到:

1sudo vim /etc/mysql/my.cnf

在旧版本中找到 skip-networking,把它注释掉就可以了

1#skip-networking

在新版本中:

1

2# Instead of skip-networking the default is now to listen only on

# localhost which is more compatible and is not less secure.

找到 :bind-address = 127.0.0.1 这一行要注释掉

1#bind-address = 127.0.0.1

修改权限

格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by “用户密码”;

1grant select,update,insert,delete on *.* to root@'%' identified by '123456';

或者所有权限

1GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '123456';

接着执行

1flush 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,如果不小心把这个改没了。。。。那你就登不上喽:

1error: 'Access denied for user 'root'@'localhost' (using password: YES)'

恩,没错,就是这样的提示,刚开始我还以为密码错了。。。。结果重置了好几遍密码都不行,知道后来才知道,原来是登录地址的权限不对/(ㄒoㄒ)/~~

你想登录的话要这样

1mysql -h 127.0.0.1 -uroot -p

哈哈哈,登录进去了吧,这就说明127.0.0.1和localhost是不一样的。

那么解决办法呢,就是再新增一条127.0.0.1的记录,我们可以直接拷贝原有记录,其余不变,把host中的记录改为127.0.0.1即可。