I have MySQL data files on a thumb drive that are used on two hosts where mysql
user's UIDs differ. As a result, MySQL fails to start when it's files have 0700
perms and an unknown UID as an owner.
I failed to find how to change MySQL's umask (and actually I don't like the idea of sharing these files to everyone), therefore I want to change UID of mysql
user on both hosts so the files belong to the same user.
I'm going to change the UID and to chown
all files owned by old mysql UID to the new user:
usermod --uid 900 --gid 900 mysql # assign the new uid
olduid=67 find / -user $olduid -group $olduid -print0 | xargs -0 chown "mysql:mysql"
Is this sufficient for an application to work in general case? Maybe, I have better options?
I've made some research and noticed two things one should take into account when changing UIDs&GIDs:
id -u mysql
=120 andid -g mysql
=127Therefore, we first change UID and GID:
Then we
find
for files owned by the late user and group separately: 'user=mysql' goes to one file, 'group=mysql' goes to another file. Also we exclude some directories fromfind
traversing tree:And only now it's okay to change owners and groups for these files found:
Finally, we check if everything went okay: find files owned by unknown UIDs of GIDs:
Hope this helps someone.
Yeah, that's pretty much all you need to do. The only files which should need changing are the logs and data files.
You might want to use find | xargs rather than a loop though.